2013-06-05 35 views
0

我此行的jQueryjQuery是防止默认动作,但不应该是

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

的上的链接我原本包括,有一个回归的一个问题是防止页面从工作的代码错误如预期。警报只是我测试,但事实证明,警报将延迟任何当前页面操作,直到它关闭。

非常感谢大家!

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

+0

“你看到弹出窗口,只有按下好后,链接才会打开。”是的,什么是错误? Javascript运行在单线程中,因此这是绝对预期的行为。 – Danack

+0

我不明白吗?您是否期望加载新页面,然后弹出警报?如果是这样,它不会那样工作! – adeneo

+0

我最终试图运行一个Ajax,很清楚,我还不够清楚!当我按下下载按钮时,无论aJax是否成功,我都希望链接打开。 –

回答

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) {}); 
    }); 
}); 
0

window.alert函数暂停页面上的JavaScript并且是模态的,因此直到用户关闭对话框才会发生任何事情。我建议的另一种方法是在html中创建自己的警报对话框,或者使用其中的一个库/插件,例如jQuery UI's dialog widget,并用它代替警报。由于您只是添加了dom元素,因此暂停脚本和任何异步函数的任何操作都将正常运行。

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> 

查看自己的网站后,我不知道您的通知的目的,但希望这可以让你从中你可以继续灵活的方向发展。