jQuery基本帮助

jQuery基本帮助,jquery,jquery-selectors,Jquery,Jquery Selectors,我肯定我会因此失去一些代表分数,因为这是一个非常基本的问题,但我无法找出使用jQuery选择器按id选择的错误 鉴于我的文件中的这一要素: <%= Html.CheckBox("IsAlwaysValid", true, new { onchange = "showHideValidSetList()", id = "IsAlwaysValidCheckBox" })%> 它输出以下标记: <input checked="checked

我肯定我会因此失去一些代表分数,因为这是一个非常基本的问题,但我无法找出使用jQuery选择器按id选择的错误

鉴于我的文件中的这一要素:

<%= 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")