我有以下HTML元素:
<a href='#' class='receipt' id='{some id. generated dynamically}'>Receipt</a>我有以下jQuery,以处理单击:
$('.receipt').click(function () {
alert('hai');
alert($(this).attr('id'));
});出于某种原因,当我click....nothing发生的时候。我最初试图使用mouseover,但我认为我做得不对,所以我尝试了click。不,dice..am,我漏掉了什么吗?
更新--正如杰夫·B所建议的那样,这就是它的工作方式,我使用的是.live ,而不是 .on ,但我确信 .on 也会工作得很好。
$('.receipt').live('click', function () {
alert('hai');
alert($(this).attr('id'));
});.on 2 - 将来将取代,因此您可能应该使用 .on**.**。
发布于 2012-03-07 20:31:58
您提到id是动态生成的。如果元素是在创建处理程序之后创建的,则它将无法工作。
对于动态元素,请使用.on()
$('body').on('click', '.receipt', function() {
alert('hai');
alert($(this).attr('id'));
});在本例中,body是实质上处理单击的元素,一旦事件在DOM上传播,然后确保它起源于.receipt。与body不同,您可以使用任何作为.receipt div父/祖先的元素,最好是更接近的元素。
因为body处理单击,所以处理程序被附加到始终存在的东西上。这样,您就可以添加和删除.receipt元素,而不必担心处理程序会消失。
发布于 2012-03-07 20:28:36
将$('receipt')更改为$('.receipt')
发布于 2012-03-07 20:28:41
你错过了一个“。”在你的选择器里。它用于选择类。
应该是:$('.receipt')。
https://stackoverflow.com/questions/9608554
复制相似问题