所以,其他人說使用類- 聽他們說!這很容易!
但是,有時更改HTML內容根本不是一個選項。在這種情況下,我們不得不求助於一些骯髒的工作,並查看標籤元素中包含的所有文本以找到相應的複選框。
var selectedCheckboxes = [];
$.each($("#container > label"),function(index,elem){
var labelText = $(elem).text();
var testString = "Workshops";
if (labelText.match(testString)){
selectedCheckboxes = $(elem).find("input[type='checkbox']:checked");
}
});
我必須警告你,這個解決方案將工作很簡單的例子,你給了,但是如果標記稍微複雜一些(如在用自己的文字內容的其他子元素),那麼這個方法就必須獲得更多ALOT更復雜。
沒有內置的選擇器來匹配HTML標記中元素的文本內容,這是正確的。元素的文本內容應該只是數據或信息的可視化表示;它不應該包含身份信息。爲了識別一個元素並將其與其兄弟或後代區分開來,我們使用id
和class
屬性。還有更多可以使用但這些是基本構建塊。
這裏要注意的一件事是jQuery的.text()
函數的行爲。它將:
獲取每個元素的合併文本內容匹配的元素集合的,包括他們的後代。
着重強調
的:contains()
選擇有關於後代類似的行爲,並在前面的回答already been covered。
在一個更動手和此限制的視覺例子...
鑑於這種簡約的HTML片段:
<div id="matt">
One
<span>Two</span>
<div>
<label>Three</label>
</div>
Four
</div>
到$("#matt").text()
的調用將導致:
OneTwoThreeFour
所有後代文本內容也包括在內......
來源
2012-04-12 14:03:10
Lix
由標籤有效的HTML包裝一個複選框? – JeffSahol 2012-04-12 13:45:54
@JeffSahol這不僅是有效的,這是非常好的做法,因爲它提供了一個更大的命中區域。 – 2012-04-12 13:47:56