【发布时间】:2009-10-19 14:47:19
【问题描述】:
我确定我会为此失去一些代表点,因为这是一个非常基本的问题,但我无法弄清楚我在使用“#”通过 id 选择的 jQuery 选择器上做错了什么.
鉴于我的文档中的这个元素:
<%= Html.CheckBox("IsAlwaysValid", true,
new { onchange = "showHideValidSetList()", id = "IsAlwaysValidCheckBox" })%>
(输出以下标记:
<input checked="checked" id="IsAlwaysValidCheckBox" name="IsAlwaysValid" onchange="showHideValidSetList()" type="checkbox" value="true" /><input name="IsAlwaysValid" type="hidden" value="false" />
)
然后这个函数使用一个 jQuery 选择器:
<script type="text/javascript">
function showHideValidSetList() {
if ($("#IsAlwaysValidCheckBox").checked) {
alert("IsAlwaysValidCheckBox is checked");
return;
}
else {
alert("IsAlwaysValidCheckBox is NOT checked");
return;
}
}
</script>
应该完全等同于使用 javascript DOM 的这个:
<script type="text/javascript">
function showHideValidSetList() {
if (document.getElementById("IsAlwaysValidCheckBox").checked) {
alert("IsAlwaysValidCheckBox is checked");
return;
}
else {
alert("IsAlwaysValidCheckBox is NOT checked");
return;
}
}
</script>
对吗?但是 javascript 版本按预期工作,而 jQuery 版本总是采用“else”分支,表明它并没有真正查看复选框的状态。
我做错了什么?
感谢您对我的包容。
【问题讨论】:
-
仅供参考,我们不会拒绝“愚蠢”的问题;没有了。我们可能会否决重复的内容;-)