2013-05-06 40 views
0

当用户按下某些键时,这个简单的jQuery显示一些文本信息。它的工作正常,但不显示文本“加载...”,如果用户点击该超链接。需要在这个jQuery上点击进入帐户

如何解决这个问题,我总是在jquery noob。

的jQuery:

$(document).ready(
function() { 
    $(document).keydown(
     function(e) { 
      var url = false; 
      if (e.which == 37) { url = $('.pret a').attr('href'); } 
      else if (e.which == 39) { url = $('.sled a').attr('href'); } 
      if (url) { $('div.A37-sheet').hide().html('<center><p>Loading...</p></center>').load(window.location = url).fadeIn(); } 
     }); 
    }); 

HTML部分:

<li class="pret button" style="left:0; top:50%; position:fixed"> 
<a class="kggkFX" style="outline: 0;" href="'.$pretlokacija.'"><img src="images/prev.png"></a> 
</li> 
<li class="sled button" style="right:0; top:50%; position:fixed"> 
<a class="kggkFX" style="outline: 0;" href="'.$sledlokacija.'"><img src="images/idigore.png"></a> 
</li> 
+1

请修改您的html部分 – 2013-05-06 05:34:30

+1

如果您将事件侦听器附加到文档,则无需等待文档准备就绪。 – Musa 2013-05-06 05:35:42

+0

@Musa我需要准备好该文件。 – 2013-05-06 05:44:29

回答

0

你没赶上click事件。这就是为什么当用户点击超链接时没有任何工作。加这个请:

$('.kggkFX').click(function(event){ 
    event.preventDefault(); 
    var a = $(event.target), 
     url = a.attr('href'), 
     container = $('div.A37-sheet'), 
     loader = '<center><p>Loading...</p></center>'; 
    container.hide().html(loader).load(window.location = url).fadeIn(); 
}); 

但是,当你试图不重复自己的代码更好。现在我们有两个相同的事件处理程序。良好的做法是所有的代码改写为:

$(document).ready(function(){ 
    $(document).keydown(function(event) { 
     if(e.which == 37) 
      $('.pret a').click(); 
     else if(e.which == 39) 
      $('.sled a').click(); 
    }); 

    $('.kggkFX').click(function(event){ 
     event.preventDefault(); 
     var a = $(event.target), 
      url = a.attr('href'), 
      container = $('div.A37-sheet'), 
      loader = '<center><p>Loading...</p></center>'; 
     container.hide().html(loader).load(window.location = url).fadeIn(); 
    }); 
}); 
+0

作品像魅力...Спасибо – 2013-05-06 08:48:21

0

我觉得这里需要的是延迟。

可能settimeout或其他东西会在这里工作。

+0

thnx的提示。我真的在想那个。 – 2013-05-06 08:47:08