2011-05-24 108 views
2

我有一個<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> 

回答

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服務器控件是真棒它包裝一下你的複選框,在spanspanchkSetMap類,而不是複選框。

+0

@Chad它是在DOM,這確實工作這樣。它不是將屬性設置爲字符串,而是將其設置爲布爾型 – hunter 2011-05-24 19:44:05

+0

一個簡單的「你誤會了」就足夠了。 – Chad 2011-05-24 19:47:47

+0

@hunter嗨,我已經與方法是 – Jorge 2011-05-24 19:47:49

0

您可以簡單地擁有一個匿名函數。 (#content是無論div是你的網頁上的所有輸入你正在尋找的div)。如果選中任何一個chkSetMap複選框,此功能將禁用所有.comboMap類的下拉菜單。 如果你只有1個複選框,並選擇一個 - 使用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); 
     } 
    }); 

}); 
}); 
1

ASP.NET放CssClass<span>(這是任何Text會去)。所以,你的選擇器拿起<span>

嘗試使用child selector去的複選框:​​