使用类选择器处理复选框

时间:2011-05-24 19:38:29

标签: jquery asp.net webforms

我有一个<asp:Checkbox />,我想看看是否通过jQuery检查它。问题是,它总是返回false。这是否与我通过类选择元素的事实有关?

js

$(document).ready(initialize);

var map;

function initialize() {

    var x;
    x = $(".chkSetMap");
    x.click(setMap);
}

function setMap() {

    if ($('.chkSetMap').attr('checked') == true) {
        $(".comboMap").attr("disabled", true);

    }
}

复选框

    <asp:CheckBox ID="chkSetMap" CssClass="chkSetMap" runat="server" />

呈现的复选框

<span class="chkSetMap"><input id="ctl00_ContentPlaceHolder1_chkSetMap" type="checkbox" name="ctl00$ContentPlaceHolder1$chkSetMap" /></span>

3 个答案:

答案 0 :(得分:1)

尝试使用.is()方法和:checked速记选择器

$(document).ready(initialize);

var $chkSetMap;

function initialize() {
    $chkSetMap = $(".chkSetMap input:checkbox").click(setMap);
}

function setMap() {
    $(".comboMap").attr("disabled", $chkSetMap.is(':checked'));
}

工作示例:http://jsfiddle.net/hunter/5XA7D/ 已更新!


由于ASP.Net服务器控件很棒,它将你的复选框包装在span中。 span具有chkSetMap类,而不是复选框。

答案 1 :(得分:1)

ASP.NET将CssClass放在<span>上(这是任何Text所在的位置)。因此,您的选择器会选择<span>

尝试使用child selector转到复选框:$('.chkSetMap > input:checkbox')

答案 2 :(得分:0)

您可以简单地使用匿名功能。 (#content is wj div是你网页上的div,它包含你正在寻找的所有输入)。如果选中chkSetMap的任何复选框,则此函数将禁用.comboMap类的所有下拉列表。 如果您只有一个复选框和一个选择 - 请改为使用ID

$(document).ready(function() {

$(function() {
    $('.chkSetMap').click(function() {
        if ($(this).is(':checked')) {
            $("#content").find('.comboMap').attr("disabled", true);
        }else{
        $("#content").find('.comboMap').attr("disabled", false);
        }
    });

});
});