我有这个:
$(document).on("click", ".prev", function(){
$(this).closest("div").find(".slider").animate({
"left": "+=450px"
}, 800, "easeInOutBack");
return false;
});
当新元素添加到DOM中时,它可以正常工作,但对于已经存在于DOM中的元素则不起作用。
当我执行以下操作:
$(".prev").on("click", function(){
$(this).closest("div").find(".slider").animate({
"left": "+=450px"
}, 800, "easeInOutBack");
return false;
});
它适用于DOM中的元素,但对于添加到DOM的新元素不起作用。是否有一种方法可以在不写两次或调用另一个函数的情况下使其同时适用于两者?
这是截图:
因此,以下是更详细的描述它的工作原理。
<div id="simple-pevs" style="padding-right: 20px;">
<?php require_once __DIR__ . "/data/get/PEVSection.php"; ?>
</div>
当某人想要添加另一个部分时,他们会点击添加按钮,该按钮会运行以下代码:
$(".add-another-pev").click(function(){
$.get("./data/get/PEVSection.php?pev="+pevGroup, function(data){
$("#simple-pevs").append(data);
});
pevGroup++;
return false;
});
你可以看到它调用的是与php预加载相同的函数。新的函数(以及添加的任何其他函数)都可以与单击事件一起使用,而第一个函数则不行。
@ArunPJohny
在添加新元素后,输入
console.log($(".prev"));
:[a.prev, a.prev, prevObject: b.fn.b.init[1], context: document, selector: ".prev", jquery: "1.9.1", constructor: function…]
0: a.prev
1: a.prev
context: #document
length: 2
prevObject: b.fn.b.init[1]
selector: ".prev"
__proto__: Object[0]
$(document).ready()
中运行它吗? - Michael Berkowskidocument.ready
处理程序中。jsfiddle会自动(且不可见地)完成此操作。 - Alnitak