首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery点击或鼠标切换功能未被击中

问jQuery点击或鼠标切换功能未被击中
EN

Stack Overflow用户
提问于 2012-03-07 20:27:03
回答 5查看 193关注 0票数 2

我有以下HTML元素:

代码语言:javascript
复制
<a href='#' class='receipt' id='{some id. generated dynamically}'>Receipt</a>

我有以下jQuery,以处理单击:

代码语言:javascript
复制
$('.receipt').click(function () {
                alert('hai');
                alert($(this).attr('id'));
            });

出于某种原因,当我click....nothing发生的时候。我最初试图使用mouseover,但我认为我做得不对,所以我尝试了click。不,dice..am,我漏掉了什么吗?

更新--正如杰夫·B所建议的那样,这就是它的工作方式,我使用的是.live ,而不是 .on ,但我确信 .on 也会工作得很好。

代码语言:javascript
复制
$('.receipt').live('click', function () {
  alert('hai');
  alert($(this).attr('id'));
});

.on 2 - 将来将取代,因此您可能应该使用 .on**.**。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-07 20:31:58

您提到id是动态生成的。如果元素是在创建处理程序之后创建的,则它将无法工作。

对于动态元素,请使用.on()

代码语言:javascript
复制
$('body').on('click', '.receipt', function() {
    alert('hai');
    alert($(this).attr('id'));
});

在本例中,body是实质上处理单击的元素,一旦事件在DOM上传播,然后确保它起源于.receipt。与body不同,您可以使用任何作为.receipt div父/祖先的元素,最好是更接近的元素。

因为body处理单击,所以处理程序被附加到始终存在的东西上。这样,您就可以添加和删除.receipt元素,而不必担心处理程序会消失。

票数 4
EN

Stack Overflow用户

发布于 2012-03-07 20:28:36

将$('receipt')更改为$('.receipt')

票数 2
EN

Stack Overflow用户

发布于 2012-03-07 20:28:41

你错过了一个“。”在你的选择器里。它用于选择类。

应该是:$('.receipt')。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9608554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档