【发布时间】:2016-04-28 14:39:23
【问题描述】:
下面是我的代码,我试图隐藏和显示动态元素。我遇到的问题是,如果我只检查“其他”,我只希望我的隐藏 div 一次只显示一个。但是,下面的代码将显示我拥有的所有 #dynamicRows 的隐藏 div。所以它适用于最初添加的第一个#dynamicRow,问题是当我有两个或更多#dynamicRows
$('#dynamicRow').on('click', 'input[id^=race]', function () {
if ($(this).is(":checked")) {
if ($(this).val() == "Other") {
$(".cssclass").each(function (index) {
$(this).closest("div").show();
});
}
else {
$(".cssclass").each(function () {
$(this).closest("div").hide();
});
}
}
});
下面是动态行,出于帮助目的,我显示了 html 代码,但是,它在屏幕上不存在,用户将单击“添加”以生成下面的代码。我在生成动态行方面没有问题,这不是我发布的原因。请注意,我的单选按钮中的名称是由 c# 生成的,并且一切正常。同样,问题不在于如何创建动态行,它在 C# 中得到了很好的处理。
动态第一行适用于上述 jQuery:
<div id="dynamicRow">
<input type="radio" value="No" id="race[]" name="Person[hhhhhh].race"> No:
<input type="radio" value="Other" id="race[]" name="Person[hhhhhh].race"> Other:
<div id="iamhidden" class="cssclass">
I appear one at a time, when other radio button is checked
</div>
</div>
动态第二行不适用于上面的 jquery,它把上面的表单事件作为自己的,所以如果我检查第二行中的单选按钮,第一个动态行会响应该事件,反之亦然:
<div id="dynamicRow">
<input type="radio" value="No" id="race[]" name="Person[hhhhh].race"> No:
<input type="radio" value="Other" id="race[]" name="Person[hhhhh].race"> Other:
<div id="iamhidden" class="cssclass">
I appear one at a time, when other radio button is checked
</div>
</div>
【问题讨论】:
-
ID 应该是唯一的,如果您想将 ID 分配给超过 1 个元素使用类。
-
你必须考虑 .each() 的用户。我希望这个线程可以帮助你:stackoverflow.com/questions/18966222/… 只是一个例子。还要避免使用id,尽量使用html标签来识别元素。
-
@Chris 我无法分配 id,因为 html 是一个动态表单,它是在 c# 中生成的,这就是为什么我有一个类调用 cssclass
-
将 on 绑定到 body 而不是 ID。我相信这应该可以解决您的问题。
-
@Chris 我使用的 id "dynamicRow" 是 ajax 如何附加我的动态行,而不是附加到正文。
标签: javascript c# jquery html