2012-01-06 13 views
0

这是我$(document).readyjQuery的。对()的委托不动态HTML响应绑定到锚标记

$("#dynaffiliate").on("click", "a.ajaxpaginate", function(event){ 
event.preventDefault(); 
    alert($(this).text()); 
}); 

<div id="dynaffiliate">存在于页面加载的一部分事件。

当我用该类注入一堆元素时,事件不会被触发。我使用的是Firefox。我也尝试使用只是普通的a没有课,没有任何反应。

现在,我也在深入思考 - 一个a元素可能无法用这种方式处理 - 因为浏览器将导航到在它有机会将事件提升到父母之前的链接。我最好使用其他元素而不是a标签吗?

+2

*浏览器只会导航到链接,然后才有可能将事件提升到父级*否,那不是事实,默认操作只会在冒泡阶段后发生,如果未取消。新元素是否都是'#dynaffiliate'的后代?如果没有,它不会工作,如果是的话,它应该。我建议你创建一个http://jsfiddle.net/演示。 – 2012-01-06 17:05:23

+1

你在使用jQuery 1.7或更高版本吗? 'dynaffiliate'必须是父母。你是否试图触发该元素上的事件? – Purag 2012-01-06 17:05:30

+1

[Works for me](http://jsbin.com/ugiket/2/)...你的情况与这个例子有什么不同? – s4y 2012-01-06 17:11:14

回答

1

适用于所有浏览器。你不重装DIV吗?

// e.g. 
$('#dynaffiliate').html('<a class="ajaxpaginate">Link text</a>'); 

// instead of 
$('#dynaffiliate') 
    .html('<div id="dynaffiliate"><a class="ajaxpaginate">Link text</a></div>'); 
// or 
$('#dynaffiliate').append('<a class="ajaxpaginate">Link text</a>'); 

你也可能使用jQuery 1.7之前的版本。在这种情况下,您应该在Firebug控制台中看到错误消息。

+0

浏览器版本是问题所在。现在令人惊叹。谢谢 – Len 2012-01-07 03:16:20