我有一个标签A,当点击它时,它附加另一个标签B以执行点击动作B. 因此,当我点击标签B时,执行动作B. 但是,该.on方法似乎不适用于动态创建的标记B.
标签A的html和jquery如下:
<a id="address" class="add_address btn btn-inverse btn-medium pull-right push-top">Add Shipping address</a>
$('.add_address').click(function(){
//Add another <a>
$(document).append('<a id="address" class="pull-right update btn btn-inverse btn-medium push-top">Update</a>');
})
Run Code Online (Sandbox Code Playgroud)
当单击标签B时,执行一些动作B. 我的jquery如下:
$('.update').on('click',function(){
//action B
});
Run Code Online (Sandbox Code Playgroud)
我有一些非动态内容,也有类".update".在.on()上面的方法中,对于非动态内容,但不适用于动态内容.
如何使其适用于动态内容?
在将Click事件添加到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;
}
Run Code Online (Sandbox Code Playgroud)
返回的按钮无法捕获click事件.但是,如果我这样做(在将按钮添加到DOM之后):
$('#my-button').click(function () {
console.log("yeahhhh!!! but this doesn't work for me :(");
});
Run Code Online (Sandbox Code Playgroud)
它有效...但不适合我,不是我想要的.
它似乎与该对象尚未成为DOM的一部分有关.
哦! 顺便说一句,我正在使用OpenLayers,我正在附加按钮的DOM对象是一个OpenLayers.FramedCloud(它还不是DOM的一部分,但会触发几个事件.)