在jQuery中使用.each动态对象?

有很多问题似乎都在问这个问题,但最终他们想要的只是附加.click事件,而不是.each,因此所有人都普遍接受的答案包括$("body").on("click", ".selector", function(){}); 这绝对不是我想要的。

我有一些生成的输入,我需要同时更改每个输入的值。 通常我会$(".inputs").each(function(){$(this).val("new-value")};或者沿着这些行的东西,但是,我不能因为动态方面。

那你怎么做$("body").on("each", ".inputs", function(){});

实际上,它就像在setTimout中运行.each一样简单。

 setTimeout(function(){ $(".inputs").each(function(){$(this).val("new-value")}); }, 5000); 

$.each适用于添加的任何新元素。

http://jsfiddle.net/4SV7n/

每次做一些不同的事情:

http://jsfiddle.net/4SV7n/1/

您可以使用$(".inputs").each(function(){$(this).val("new-value")};完全没有动态元素。只需在添加元素后重新运行脚本动态。

从评论中我发现存在一些关于“每个”的误解。 ‘each’不是一个事件,因此如果调用’each’则不会触发任何事件。 如果你想跟踪添加的元素,因为你无法控制它们的添加时间,你需要一个计时器:

 setInterval(function(){ $(".inputs").each(function(){$(this).val("new-value")}; },500); 

这是一个更好的脚本,完全符合OP的要求。

 function doWithInput(i, e){ $(e).val("done with each"); } $(document).ready(function(){ $("#button").click(function(){ $("#inputs").append("
"); }); $(".inputs").each(doWithInput); }); $(document).on("DOMNodeInserted", ".inputs_new", function(e) { $(e.target).removeClass('inputs_new').addClass('inputs'); doWithInput(0, e.target); });