2011-10-24 56 views
4

我們可以選擇選中的複選框(jQuery中)如下:jQuery選擇一個選中的複選框的標籤

jQuery(:checked) 

但如何才能選擇jQuery中的選中的複選框的標籤嗎?

+0

除非您l abel的for屬性指向複選框 –

+0

或者您已將複選框包裝在標籤中,在這種情況下,您只需查找父標籤 –

回答

4

複選框犯規附帶文本(在asp.net它DOES

jQuery(":checked").next('span').html() //next or prev (depends n direction) 
+0

ASP.NET的CheckBox控件是否生成一個HTML複選框, 't **帶有文字,然後是文字? – BoltClock

+0

@BoltClock多數民衆贊成什麼寫在asp.net它是否cmakes複選框,後來一個標籤與'爲' –

+0

這很好!但就我而言,我的複選框列表已被綁定,我不得不使用'標籤'而不是'span'。 – Eric

2

複選框文本是label元件。

在HTML中,它看起來像:只需用for屬性的符合項目搜索它

<input type="checkbox" name="chk" /> 
<label for="chk">Checkbox 1</label> 

你可以找到它喜歡:

jQuery('input[type=checkbox]:checked').map(function() { 
    return $('label[for=' + $(this).attr('name') + ']'); 
}); 

這將返回所有複選框標籤。標籤不需要是複選框旁邊的下一個或上一個元素。

+0

for屬性可以指向一個ID也可以使用'$(this).attr('name')|| $(this).attr('id')' – meo

2

假設你有這個網站

<label>Label</label> 
<input type="checkbox" checked="checked"> test </input> 
<label>Label 2</label> 
<input type="checkbox" > test 2 </input> 
<label>Label 3</label> 
<input type="checkbox" > test 3</input> 

你可以找到使用

$("input:checked").prev('label'); 

*使用.next如果你有複選框後的標籤在你的HTML

*使用.parent標籤如果您將複選框包裝在標籤元素中

+0

或簡單地使用'nearest()'...(它無效,用標籤包裝輸入) – meo

+0

你是對的,是無效的,但是......它發生了!只有當它是複選框的祖先時,'.closest()'纔會選擇標籤(來自jQuery in Action:返回包含最近祖先的包裝集合,如果有的話, 匹配傳入的表達式) – sikrip