jQuery正在阻止默认操作,但不应该这样做

时间:2013-06-05 02:08:38

标签: jquery wordpress

我有这行jQuery

 jQuery(document).ready(function($) {
    $(".thumbs a.dlink").live("click", function() { 
    alert("yo");
});

在我最初包含的链接上,代码中返回false,导致页面无法按预期工作。警报只是我测试,但事实证明,警报将延迟任何当前页面操作,直到它关闭。

非常感谢大家!

编辑:抱歉这可能导致任何混乱。故事的道德 - 注意回归虚假!

3 个答案:

答案 0 :(得分:1)

我认为问题在于代码中的return false

jQuery(document).ready(function($) {
    $(".thumbs a.dlink").live("click", function() { 
        var id = $(this).attr('id'); //$("#galid").val();
        id = id.substr(1);
        alert("yo"); 
        $.post( MyAjax.ajaxurl, {
            action : 'download_counter',
            postCommentNonce : MyAjax.postCommentNonce,
            id : id
        },function(response) {} );
    });
});

答案 1 :(得分:0)

window.alert函数暂停页面上的JavaScript并且是模态的,因此在用户关闭对话框之前不会发生任何事情。我对替代方案的建议是在html中创建自己的警报对话框,或者使用其中一个库/插件,例如: jQuery UI's dialog widget,并将其用于您的邮件以代替警报。由于你只是添加了一个dom元素,所以没有任何东西会暂停你的脚本,任何异步函数都会正常运行。

答案 2 :(得分:0)

尝试更像这样的事情:

<div id='dialog-yo' title='Download In Progress'>Yo</div>
<div class='thumbs'><a class="dlink" dlTitle='my cool image'>try this now</a></div>
<script>
  $(function() {

    $( '#dialog-yo' ).dialog({
      modal: false,
      autoOpen: false,
      closeOnEscape: true,
      draggable: true,
      hide: 'slide',
      show: 'fade',
      resizable: true,
      height: 200,
      width: 200,
      zIndex: 200,
      buttons: {
        'Yeah, Okay': function() { $( '#dialog-yo' ).dialog('close'); }
      }
    });

    $(".thumbs a.dlink").live("click", function() { 
      $( '#dialog-yo' ).dialog('open').html(this.getAttribute('dlTitle'));
    });        

  });
</script>

查看您的网站后,我不确定您的通知目的,但希望这可以让您灵活地继续前进。