你在你的第一個有一個額外的:
,你想:
$("div#divid:visible").find('input:checkbox').length
// ^---- No : here
雖然div
在開首是沒有意義的(無害的,但毫無意義的),除非有id="divid"
元素可能是一個div
有時而不是其他時間,如果它不是div
,您想跳過它。更有可能的是,剛:
$("#divid:visible").find('input:checkbox').length
儘管實際上,你可以只用一個選擇這樣做,而不是調用find
:
$("#divid:visible input:checkbox").length
另外請注意,您需要確保相關div
是在DOM並且有display
設置,您需要檢查上面的代碼運行時間,因爲它將在時刻查看。
示例 - Live Copy | Source
HTML:
的JavaScript:
(function($) {
display('$("#div1:visible input:checkbox").length = ' + $("#div1:visible input:checkbox").length);
display('$("#div2:visible input:checkbox").length = ' + $("#div2:visible input:checkbox").length);
function display(msg) {
$("<p>").html("<code>" + msg + "</code>").appendTo(document.body);
}
})(jQuery);
結果:
$("#div1:visible input:checkbox").length = 5
$("#div2:visible input:checkbox").length = 0
我試過這個,但它也沒有工作。同樣,同樣的行爲,當我不使用可見時選擇全部,或者當我選擇時不選擇。 – CHP
@CHP:不知道該告訴你什麼。如果在執行上面的查詢時div被隱藏*,則其子複選框不會被計數。如果它沒有隱藏,他們會。看到我添加的實例。 –
你在評論中告訴我正確的東西:)我試圖編輯的腳本很複雜,並不是我自己的,但是通過移動('#divid:visible''input:checkbox')。length到不同的部分的腳本,它的作品。我相信它必須在div顯示改變之前和之後多次做選擇器,併產生我看到的結果。但是現在我將它移到了我調用的函數的頂部,以便它與其他任何代碼分開進行,它就可以工作。我想接受你的答案,但實際上這個評論是正確的。 – CHP