首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将单击事件附加到尚未添加到DOM的JQuery对象

将单击事件附加到尚未添加到DOM的JQuery对象
EN

Stack Overflow用户
提问于 2012-06-07 02:55:02
回答 5查看 163.5K关注 0票数 182

在将单击事件添加到DOM之前,我在将其附加到JQuery对象时遇到了很多问题。

基本上我有一个按钮,我的函数返回这个按钮,然后我将它附加到DOM中。我想要的是返回带有自己的click处理程序的按钮。我不想从DOM中选择它来附加处理程序。

我的代码是:

createMyButton = function(data) {

  var button = $('<div id="my-button"></div>')
    .css({
       'display' : 'inline',
       'padding' : '0px 2px 2px 0px',
       'cursor' : 'pointer'
     }).append($('<a>').attr({
       //'href' : Share.serializeJson(data),
       'target' : '_blank',
       'rel' : 'nofollow'
     }).append($('<image src="css/images/Facebook-icon.png">').css({
       "padding-top" : "0px",
       "margin-top" : "0px",
       "margin-bottom" : "0px"
     })));

     button.click(function () {
        console.log("asdfasdf");
     });

     return button;     
}

返回的按钮无法捕获单击事件。但是,如果我这样做(在将按钮添加到DOM之后):

$('#my-button').click(function () {
    console.log("yeahhhh!!! but this doesn't work for me :(");
});

它起作用了..。但不是为了我也不是我想要的。

这似乎与对象还不是DOM的一部分有关。

噢!顺便说一句,我正在使用OpenLayers,我附加按钮的DOM对象是一个OpenLayers.FramedCloud (它还不是DOM的一部分,但一旦触发了几个事件就会成为它的一部分)。

EN

回答 5

Stack Overflow用户

发布于 2012-06-07 02:59:25

试试这个..。将正文替换为父选择器

$('body').on('click', '#my-button', function () {
    console.log("yeahhhh!!! but this doesn't work for me :(");
});
票数 23
EN

Stack Overflow用户

发布于 2015-01-16 02:58:21

你必须把它附加上去。使用以下命令创建元素:

var $div = $("<div>my div</div>");
$div.click(function(){alert("clicked")})
return $div;

然后,如果你追加它,它将会工作。

看看您的示例here和一个简单版本的here

票数 8
EN

Stack Overflow用户

发布于 2012-06-07 03:01:50

在事件上

$('#my-button').on('click', function () {
    console.log("yeahhhh!!! but this doesn't work for me :(");
});

或者在append之后添加事件

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

https://stackoverflow.com/questions/10920355

复制
相关文章

相似问题

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