$("[name=form_1]").each(function(){
alert("i in else"+i);
$('.eform_text').each(function() {
});
});
这个循环会遍历所有只有form1的eform_text类的元素。或者它会遍历所有拥有该类的元素吗?
确切的jsp代码如下:
<c:when test="${eformDetails.controlType==1}">
<input id="textBox_${eformDetails.id}_${eformDetails.required}_${i}" class="eformDetail eform_text" type="text" value="" name="form_${i}" onblur="validateEformInputs(${i-1})"></input>
</c:when>
我的表格每次都有所不同。对于每个表格,我需要获得所有的文本框。目前在你的帮助后我的javascript是屁股跟随:
$( “[名称=形式_” + I + “]”)。每个(函数(I){ 警报(“我在其他地方”+ i);
$('.eform_text', this).each(function() {
textboxId = $(this).attr("id");
它到达了第一个警报但我无法到达第二个循环。它没有获得具有类eform_text的元素。不知道这里出了什么问题。请问你能帮忙吗?
答案 0 :(得分:11)
它将迭代所有元素与该类,无论是否在名称为“form_1”的表单内。要仅查看每个表单(我猜你必须有多个名称为“form_1”的表单,尽管这看起来很奇怪),在外部循环中使用find
以限定内部循环: / p>
$("[name=form_1]").each(function(formIndex) {
alert("formIndex in each: " + formIndex);
$(this).find('.eform_text').each(function(textIndex) {
alert("textIndex in each: " + textIndex);
});
});
或者你可以使用$()
的第二个参数,它提供了工作的上下文:
$("[name=form_1]").each(function(formIndex) {
alert("formIndex in each: " + formIndex);
$('.eform_text', this).each(function(textIndex) {
alert("textIndex in each: " + textIndex);
});
});
要么应该工作。
请注意,正如@Shrikant Sharat在评论中指出的那样(感谢Shrikant!),我假设原始代码中的i
是传递给each
的索引。我已经在上面显示了两个级别的索引(带有描述性名称)。
答案 1 :(得分:1)
你的第二个答案。
因为你每次都在调用$(
,所以它会实例化一个jQuery对象的新副本,它不关心它所处的函数级别。
它将遍历该类的每个元素。
答案 2 :(得分:0)
$('.element').each(function(){
$(this).find('.elementChild').each(function(){
// do something
});
});