将单击事件附加到尚未添加到 DOM 的 JQuery 对象
2022-08-30 01:43:33
在将单击事件附加到JQuery对象之前,我遇到了很多麻烦。
基本上,我有这个按钮,我的函数返回,然后我把它附加到DOM。我想要的是使用自己的单击处理程序返回按钮。我不想从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的一部分,但一旦触发了几个事件,它就会被激活。