2013-07-29 100 views
0

我嵌套的HTML標籤&輸入標籤不for=""屬性的標籤,所以我不能只用selecor輕鬆檢查標籤:檢查標籤值

<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">  
    <li id="category-6" class="popular-category"><label class="selectit"><input value="6" type="checkbox" name="post_category[]" id="in-category-6"> Action</label></li> 
    <li id="category-7" class="popular-category"><label class="selectit"><input value="7" type="checkbox" name="post_category[]" id="in-category-7"> Adventure</label></li> 
</ul> 

我要檢查,如果標籤是「行動「或」冒險「然後檢查其複選框輸入。

任何幫助表示讚賞。

+1

$('li label')。text();應該可以工作 – Sergio

+0

@Sergio:是的,在那裏拋出一個'$ .trim' ... –

+0

你還沒有告訴我們什麼觸發你的代碼來檢查這些元素。如果用戶點擊複選框會觸發檢查,那麼請查看我的答案以獲取可能的解決方案(使用jsFiddle示例)。 – gibberish

回答

2

$.trim($("li label").text())是你在找什麼。這將在label中給出單獨的文字。要檢查具有動作的複選框,您必須在標籤/複選框上運行循環。我選擇了循環播放標籤。

$("li label").each(function (i) { 
    //check if text has Action or adventure 
    //this is equivalent to if($.trim($(this).text() === "Action" || $.trim($(this).text() === "Adventure") 
    var isTrue = ["Action", "Adventure"].indexOf($.trim($(this).text())) != -1 
    //search for the checkbox and change its property 
    $("[type=checkbox]", this).prop("checked", isTrue); 
}); 

演示:http://jsfiddle.net/8w9SC/2/

+0

謝謝,然後如何選擇相關複選框? – revo

+0

檢查更新的答案@revo – krishgopinath

1

你可以做到這一點的方式不同,不知道你需要什麼。

如果你點擊複選框

$('input[type=checkbox]').on('change', function (e) { 
    var value = $(e.target).val(); 
    var name = $.trim($(e.target).parent().text()); 
}); 

,或者如果你只是運行代碼,尋找它

$('li label').each(function() { 
    var name = $.trim($(this).text()); //name of the label 
    var value = $(this).closest('li').val(); //value of the input of that label 
}); 
+0

對於'nearest()'方法+1。 – revo

0

假設你需要檢查哪些複選框剛纔檢查的用戶來說,這應該爲你工作:

jsFiddle

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('[id^=in-category]').click(function() { 
      var xx = $(this).parent().text(); 
      alert(xx); 
      var yy = $(this).is(':checked') ? 1 : 0; 
      alert(yy); 
     }); 

    }); //END $(document).ready() 
</script>