jquery中“on”方法中的prev()

时间:2013-11-10 13:09:49

标签: jquery syntax selector

所以我有这个:

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

我希望这可以处理新创建的元素,如下所示:

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

这不起作用。是否有正确的语法或这是不可能的?
感谢。

4 个答案:

答案 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");
}