Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery迭代元素并将事件绑定到每个元素上_Javascript_Jquery_Dhtml - Fatal编程技术网

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() { ... });