jQuery基本帮助
我肯定我会因此失去一些代表分数,因为这是一个非常基本的问题,但我无法找出使用jQuery选择器按id选择的错误 鉴于我的文件中的这一要素:jQuery基本帮助,jquery,jquery-selectors,Jquery,Jquery Selectors,我肯定我会因此失去一些代表分数,因为这是一个非常基本的问题,但我无法找出使用jQuery选择器按id选择的错误 鉴于我的文件中的这一要素: <%= Html.CheckBox("IsAlwaysValid", true, new { onchange = "showHideValidSetList()", id = "IsAlwaysValidCheckBox" })%> 它输出以下标记: <input checked="checked
<%= 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版本按照预期工作,而jqueryone总是使用else分支,这表明它并没有真正查看复选框的状态
我做错了什么
谢谢你对我的支持。使用这个:
if ($(checkBoxControl).attr("checked")) {
与此相反:
if ($("#IsAlwaysValidCheckBox").checked) {
尽管jQuery选择器看起来像是返回复选框一样的DOM元素,但实际上它们返回的是一个jQuery对象,该对象没有一个名为checked的方法。您可以在以下未压缩的jquery源代码中最清楚地看到这一点:
许多有趣的jQuery方法,如animate、attr、html等,都是在这个.context上操作的,只要应用选择器,这个.context就会被指定或重新定义。试试这个:
<script type="text/javascript">
function showHideValidSetList() {
if ($("#IsAlwaysValidCheckBox").val()) {
alert("IsAlwaysValidCheckBox is checked");
return;
}
else {
alert("IsAlwaysValidCheckBox is NOT checked");
return;
}
}
</script>
该方法是一种检查值的跨元素方法。。。无论是文本框、选择列表还是复选框。。。您可以使用.val获取/设置它的值:-
$("#IsAlwaysValidCheckBox").checked
不正确,因为$IsAlwaysValidCheckBox返回jQuery对象,而不是元素。jQuery对象没有名为checked的属性,这就是它输入else的原因
你想要:
$("#IsAlwaysValidCheckBox").val()
或:
或:
或:
或:
你试过使用
if ($("#IsAlwaysValidCheckBox").attr("checked")) {
您需要使用以下选项:
$("#IsAlwaysValidCheckBox").attr("checked")
确定复选框是否已选中。另一种简单操作方法: $“IsAlwaysValidCheckBox:已选中”。长度 选择器:checked是特定于jquery的,用于返回选中的元素。长度检查是否返回任何元素
做同样的事情有很多方法。仅供参考,我们不会否决愚蠢的问题;没有。不过,我们可能会否决重复投票-谢谢,杰夫和其他所有回应的人。我不理解返回jQuery对象和返回所选元素之间的区别。我很高兴——我喜欢jQuery,但在核心文档中解释这个习惯用法并不会让他们丧命
$("#IsAlwaysValidCheckBox").attr("checked") === "checked"
$("#IsAlwaysValidCheckBox")[0].checked
$("#IsAlwaysValidCheckBox").get(0).checked
if ($("#IsAlwaysValidCheckBox").attr("checked")) {
$("#IsAlwaysValidCheckBox").attr("checked")