0

当用户按下某些键时,这个简单的 jquery 会显示一些文本信息。它工作正常,但如果用户单击该超链接,则不显示文本“正在加载...”。

如何解决这个问题,我完全是 jquery 的菜鸟。

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>
4

2 回答 2

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();
  });
});
于 2013-05-06T06:10:52.197 回答
0

我认为这里需要的是延迟。

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

于 2013-05-06T06:15:31.157 回答