所以我有这个:
$(".change_cont").prev().click(function(e){
alert("Hello World");
}
我希望这可以处理新创建的元素,如下所示:
$("body").on("click", $(".change_cont").prev(), function(){
alert("Hello World");
}
这不起作用。是否有正确的语法或这是不可能的?
感谢。
答案 0 :(得分:5)
您是否尝试过以下操作?
var myElementId = "#" + $(".change_cont").prev().attr("id");
$("body").on("click", myElementId, function(){
alert("Hello World");
});
这将要求该元素具有id。如果没有,你可以使用该类,我想,如果它有一个类分配给它。如果没有为该元素分配任何内容,那么只需为其分配一个id或类别。
如果前一个元素上没有标识类或id,那么为什么不在创建元素时创建它?在这种情况下,您只需向它们添加一个类,而不是使用类名而不是id属性:
$(".change_cont").each(function(e){
if (!$(this).prev().hasClass('myClass'))
$(this).prev().addClass('myClass');
});
$("body").on("click", ".myClass", function(){
alert("Hello World");
});
答案 1 :(得分:0)
在jquery api http://api.jquery.com/on/中说第二个参数selector
应该有“String”,在你的情况下它是jQuery对象,所以我认为你的绑定不起作用
答案 2 :(得分:0)
动态元素只会由您的代码添加,因此每次发生时,只需使用类标记感兴趣的元素:
function updateElements() {
$('.change_cont').prev().addClass('contClick');
}
然后在委派的处理程序中使用该类:
$('body').on('click', '.contClick', function() {
...
});
答案 3 :(得分:0)
只能使用prev + sibling
选择器选择下一个元素。检查是否可以选择另一个元素的下一个元素并获得相同的结果。
$("body").on("click", ".change_cont_another + *", function(){
alert("Hello World");
}