36

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

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

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

4

5 回答 5

7

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

setTimeout(function(){
  $(".inputs").each(function(){$(this).val("new-value")});
}, 5000);
于 2013-09-12T01:49:12.987 回答
5

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

http://jsfiddle.net/4SV7n/

每次都做不同的事情:

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

于 2013-07-03T15:16:18.453 回答
4

这是完全符合 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);
});
<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>

于 2018-04-09T08:44:48.717 回答
3

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

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

setInterval(function(){ $(".inputs").each(function(){$(this).val("new-value")}; },500);
于 2013-07-03T15:10:34.160 回答
0

怎么样this

http://jsfiddle.net/cudts0f2/

我希望动态生成的文本对每个

于 2019-12-02T05:20:35.433 回答