Javascript jquery迭代元素并将事件绑定到每个元素上
我需要将按键事件绑定到动态构建的元素形式,请参见下文Javascript jquery迭代元素并将事件绑定到每个元素上,javascript,jquery,dhtml,Javascript,Jquery,Dhtml,我需要将按键事件绑定到动态构建的元素形式,请参见下文 <div class="Customer"> <select name="dropdown1" id="dropdown1"> </select> <input type="textbox" name="firstname1" id="firstname1"> <input type="textbox" name="lastname1" id="lastname1"> </di
<div class="Customer">
<select name="dropdown1" id="dropdown1">
</select>
<input type="textbox" name="firstname1" id="firstname1">
<input type="textbox" name="lastname1" id="lastname1">
</div>
<div class="Customer">
<select name="dropdown2" id="dropdown2">
</select>
<input type="textbox" name="firstname2" id="firstname2">
<input type="textbox" name="lastname2" id="lastname2">
</div>
... and repeat..
解决方案应与jQuery 1.3.2配合使用,请参见
PS:输入中没有类型textbos。是文本。为了在发生更改时触发回调,请使用更改而不是单击事件。如果您希望它在输入和下拉列表中都起作用,则需要输入,如果要在每个文本输入上附加事件处理程序,请选择 HTML类型是文本而不是文本框
<div class="Customer">
<select name="dropdown1" id="dropdown1">
</select>
<input type="text" name="firstname1" id="firstname1">
<input type="text" name="lastname1" id="lastname1">
</div>
<div class="Customer">
<select name="dropdown2" id="dropdown2">
</select>
<input type="text" name="firstname2" id="firstname2">
<input type="text" name="lastname2" id="lastname2">
</div>
http://jsfiddle.net/pSFj3/
编辑-我想指出您使用了错误的语法,但正如许多人指出的,有更好的方法来处理事件。例如,您可以使用事件委派
$('.Customer').on( 'click', 'input:text', function() {
alert('clicked on input');
});
如果要将单击事件附加到类Customer元素中的每个文本框中,是否应该这样做:
$(".Customer input[type=text]").click(function() { });
如果表单是在客户机上动态构建的,则需要使用该函数
$(document).on('keypress', '.Customer input[type="text"]', function() { ... });
目前还不清楚您的目标是什么,请参见上文,我们已经添加了更多帮助。input:textbox尝试将事件绑定到每个textbox,尽管这样做失败。我认为这也是有缺陷的,因为这不会将事件附加到下拉列表,也会将事件附加到表单中我不感兴趣的字段。我不知道您从哪里获得:textbox选择器,或者从哪里获得type=textbox。正确的选择器为:text,类型为text。我有一种感觉,DOM不理解keypress作为一种奇怪的输入类型。。我只需要对重复x次的3个元素进行迭代,并向它们附加一个事件。这可能吗?我想他认为他必须使用每个函数,但实际上并不需要。@ocanal我想指出,他使用了很多错误的语法,但你是对的,他最好使用事件委托来处理事件,这样他就可以使用更少的句柄。该代码不会检查其他元素是否为空。我的答案是这样的。从代码的外观来看,这只适用于复选框,而不适用于下拉列表?尽管我们使用的是jquery版本1.3.2,但它似乎不起作用,谢谢你的帮助?你应该在问题中写下这一点。Se我的更新,现在它在1.3.2上运行@James?在我解决了你的问题后,再加上这里没有提到的其他三件事,你就消失了?
$('.Customer').on( 'click', 'input:text', function() {
alert('clicked on input');
});
$(".Customer input[type=text]").click(function() { });
$(document).on('keypress', '.Customer input[type="text"]', function() { ... });