所以我有这个:
$(".change_cont").prev().click(function(e){
alert("Hello World");
}
我希望它适用于新创建的元素,如下所示:
$("body").on("click", $(".change_cont").prev(), function(){
alert("Hello World");
}
这行不通。是否有正确的语法或者这只是不可能的?
谢谢。
您是否尝试过以下操作?
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");
});
在 jquery api http://api.jquery.com/on/中说第二个参数selector
应该有类型"String",在你的情况下它是 jQuery 对象,所以我认为你的绑定将不起作用。
动态元素只会由您的代码添加,因此每次发生这种情况时,只需用类标记感兴趣的元素:
function updateElements() {
$('.change_cont').prev().addClass('contClick');
}
然后在您的委托处理程序中使用该类:
$('body').on('click', '.contClick', function() {
...
});
只能使用prev + sibling
选择器选择下一个元素。检查您是否可以选择另一个元素的下一个元素并获得相同的结果。
$("body").on("click", ".change_cont_another + *", function(){
alert("Hello World");
}