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

o_O*_*o_O 32 javascript each jquery dynamic dynamically-generated

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

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

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

o_O*_*o_O 7

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

setTimeout(function(){
  $(".inputs").each(function(){$(this).val("new-value")});
}, 5000);
Run Code Online (Sandbox Code Playgroud)


Sam*_*eid 5

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

http://jsfiddle.net/4SV7n/

每次都做不同的事情:

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

  • 那当然有效。如果我可以随时调用脚本,那将会很容易。不幸的是,需要 .on 福利的重点是我没有那个控制权。 (3认同)

Tar*_*ste 5

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

function doWithInput(i, e){
	$(e).val("done with each");
}

$(document).ready(function(){
    $("#button").click(function(){
       $("#inputs").append("<input class='inputs_new' type='text' /><br />");
    });
  	$(".inputs").each(doWithInput);
});

$(document).on("DOMNodeInserted", ".inputs_new", function(e) {
	$(e.target).removeClass('inputs_new').addClass('inputs');
  doWithInput(0, e.target);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="inputs">
    <input class="inputs" type="text" placeholder='type in me' /><br />
</div>
<button type="button" id="button">Add</button>
Run Code Online (Sandbox Code Playgroud)