簡體   English   中英

檢查元素是否包含特定的子元素

[英]Check if an element contains a specific child element

我有很多div ,有時包含鏈接。 我想檢查一下他們是否有鏈接。 這是我的嘗試:

var container = $(this).closest('.content').find('.text');

    //Check if text contains a tags
    if(container+':has(a)'){
        alert('contain link'); 
    }
    else{
        alert('no link found');  //Alert "contain link" even if no link is found.
    }

通過執行container.html()我可以看到container的確切內容,包括錨標簽,但我上面的代碼總是說它找不到錨標簽。

有人能告訴我我做錯了什么嗎?

改為:

if(container.find("a").length){ ...

container是一個jquery對象, .find()是該對象的一個​​函數,用於查找其中的元素。 長度大於0意味着它會找到一個錨標記,它將評估為true。

編輯:

另外,解釋為什么你的例子不起作用。 當你執行container+':has(a)' ,你正在做一個字符串連接,它在你的對象上運行toString() (將它轉換為“[object Object]”)。 所以你最終得到字符串“[object Object]:has(a)”,它總是評估為true。

您可以使用選擇器的length屬性來確定是否找到任何元素。 嘗試這個:

var $container = $(this).closest('.content').find('.text');

if ($('a', $container).length) {
    alert('Contains links'); 
}
else {
    alert('No links found');
}

更改

if(container+':has(a)'){  

if(container.has('a').size()){  

container是一個jquery對象,而不是一個選擇器字符串

如果您將其更改為,則可以使用

 if($(container+":has(a)").length > 0){

在文檔中

提供的選擇器針對匹配元素的后代進行測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM