首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不附加到DOM的jquery单击

不附加到DOM的jquery单击
EN

Stack Overflow用户
提问于 2011-04-18 22:12:03
回答 5查看 160关注 0票数 2
代码语言:javascript
运行
复制
var html = '<div><a href="#" id="test">Btn</a></div>';
$(html).find("#test").click(function(){
  console.log("clicked");
});
//later
$(htmlNode).html(html);

为什么我没有收到“点击”日志?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-18 22:13:08

您需要附加jQuery对象,而不仅仅是设置内部的HTML:

代码语言:javascript
运行
复制
var html = $('<div><a href="#" id="test">Btn</a></div>');
html.find("#test").click(function(){
  console.log("clicked");
});
//later
$(htmlNode).append(html);

编辑:为了更清楚起见,使用append而不是html,即使在传入jQuery对象时html在功能上与.empty().append(val)等效。

票数 2
EN

Stack Overflow用户

发布于 2011-04-18 22:16:54

问题是,您正在将单击事件绑定到DOM中还不存在的对象,并且它不是jQuery对象。您可以采取两种方法。

1)使用Live:

代码语言:javascript
运行
复制
$("#test").live('click', function(){
  console.log("clicked");
});
//later
var html = '<div><a href="#" id="test">Btn</a></div>';
$(htmlNode).html(html);

2)构造一个合适的jQuery DOM对象,并绑定到该对象上。

代码语言:javascript
运行
复制
var a = $('<a></a>').attr('href', '#').click(function() {
  console.log("clicked");
});
//later
$(htmlNode).html(a.wrap('<div></div>').html()); //This could also use append or appendTo.

最好的方法取决于你的情况。一定要考虑到,在JavaScript中附加到DOM是非常昂贵的!

票数 0
EN

Stack Overflow用户

发布于 2011-04-18 22:17:31

您只是将单击事件附加到html..you,而不是实际触发单击事件

尝试在附加事件后调用.click()

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

https://stackoverflow.com/questions/5704140

复制
相关文章

相似问题

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