jquery“on”事件没有针对点击事件触发?

时间:2013-07-05 14:16:08

标签: javascript jquery html

出于某种原因,我无法触发点击事件的“on”事件。这是调用和HTML的样子:

HTML:

<a class="cmt-replies-show" href="javascript:void(0)" id="cmt-count" style="">
  <span>View All</span>
</a>

jQuery的:

$('.cmt-replies-show').on("click", function(e) {
  e.preventDefault();

  alert("Clicked");

});

知道我缺少什么吗?

5 个答案:

答案 0 :(得分:3)

最可能的原因是绑定事件时元素不在DOM中。

如果您动态添加元素,则可以执行以下操作:

$(document.body).on("click", '.cmt-replies-show', function(e) {

如果您的脚本包含在元素前面的页面中,您可以在正文末尾移动脚本,也可以在ready事件中调用代码:

$(function(){
  $('.cmt-replies-show').on("click", function(e) {
    e.preventDefault();
    alert("Clicked");
  });
});

答案 1 :(得分:0)

如果您尝试访问动态注入DOM的元素,则应使用以下语法:

$(document).on('click', '.cmt-replies-show', function(e) { 
// your code goes here
});

document可以替换为文档准备就绪时可用的每个父项。

答案 2 :(得分:0)

保罗所说的 - 确保在DOM准备就绪后绑定事件。

仅供参考,如果您直接使用'on'定位元素,则可以使用$('a')。click(function(){...}); 。如果你想委托像这样的事件,“开启”会更有用:

$('#container').on('click','a',function(){

});

答案 3 :(得分:0)

您可能在脚本执行后定义了div。

将其包裹在$(document).ready(function() { .... });中,以确保在完整DOM可用后执行。

答案 4 :(得分:0)

我理解在页面上动态注入此链接的原因。您的DOM已处于就绪状态,并且在注入此部分代码时会读取所有函数。

注入HTML时,请使用单击功能绑定元素。

使用live()应该可以解决你的目的 -

 $('#yourLink').live('click', function(){
   //Your logic here
});