2017-06-08 103 views
1

我試圖檢查元素是否包含以下功能的輸入元素

$(document).on("click", ".edit_text", function() { 
    if($(this).children().is("input")) { 
     $(this).html("<input type='text'>") 
    } 
}) 

我不這樣做,因爲所有的解決方案的方式點使用選擇,如$(".edit_text :contains(input)")

我需要使用$(this),因爲我在具有類而不是特定元素的元素上使用該函數。

有沒有辦法達到這個目的?

回答

2

:has()嘗試如:

if($(':has("input")', this)) { 

作爲文檔爲:has()狀態:

選擇含有該 指定選擇相匹配的至少一種元素的元素。

:has()搜索所有後代,而不僅僅是兒童。或者你可以使用.has(),如:

if($(this).has("input")) { 

通常.has()執行優於:has()

+0

啊,jQuery的力量。如此多種方式來完成同樣的事情... –

+0

需要檢查長度.... $()返回truthy對象 – charlietfl

2
$(this).find('input').length > 0 
//or just 
$(this).find('input').length 
//since it is truthy. or 
$(this).find('> input').length 
//if you only want to search one level deep 
+0

添加「一級深度」方法的獎勵點。 –

0

這不是完全清楚自己在做什麼,但修改下面的代碼應該讓你去在正確的方向:

$(document).on("click", ".edit_text", function() { 
    // search for an 'input' element within the context of the clicked element 
    // .length will be > 0 if any are found 
    if($('input', this).length) { 
     $(this).html("<input type='text'>") 
    } 
}); 
相關問題