3

所以我有这个:

$(".change_cont").prev().click(function(e){
  alert("Hello World");
}

我希望它适用于新创建的元素,如下所示:

$("body").on("click", $(".change_cont").prev(), function(){
  alert("Hello World");
}

这行不通。是否有正确的语法或者这只是不可能的?
谢谢。

4

4 回答 4

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");
});
于 2013-11-10T13:16:02.870 回答
0

在 jquery api http://api.jquery.com/on/中说第二个参数selector应该有类型"String",在你的情况下它是 jQuery 对象,所以我认为你的绑定将不起作用。

于 2013-11-10T13:20:46.340 回答
0

动态元素只会由您的代码添加,因此每次发生这种情况时,只需用类标记感兴趣的元素:

function updateElements() {
    $('.change_cont').prev().addClass('contClick');
}

然后在您的委托处理程序中使用该类:

$('body').on('click', '.contClick', function() {
     ...
});
于 2013-11-10T13:30:23.130 回答
0

只能使用prev + sibling选择器选择下一个元素。检查您是否可以选择另一个元素的下一个元素并获得相同的结果。

$("body").on("click", ".change_cont_another + *", function(){
  alert("Hello World");
}
于 2013-11-10T13:40:15.313 回答