2012-02-12 51 views
1

殼體:應選擇對象如何檢查HTML元素是否有jQuery的一些HTML標記?

例如:

function getDomPart(text,htmlTag){ 
    return $(text).closest(htmlTag).get(0); 
} 

var text1='<object>some text + html elements </object>'; 
var text2='<div><object>some text + html elements </object></div>'; 
alert(getDomPart(text1,'object')); 
alert(getDomPart(text2,'object')); 

結果應該是:一些文本+ html元素 ,但它不是。

請告訴我應該修正什麼。

編輯: 請參閱我的答案與簡短的解決方案。

+0

什麼_is_的結果呢? – 2012-02-12 13:11:36

+0

@LightnessRacesinOrbit。這是DOMelement和不明確的。看到我的答案。 – gdoron 2012-02-12 13:35:20

+0

@gdoron:不,我正在試圖訓練OP來提出更好的問題。 – 2012-02-12 13:47:11

回答

0

,我得到的有關想法的解決方案:加包裝元素則只能用來發現:

function search(text,htmlTag){ 
    return $('<div>'+text+'</div>').find(htmlTag).html(); 
} 


var text1='<object>some text + html elements </object>'; 
var text2='<div><object>some text + html elements </object></div>'; 
alert(search(text1,'object')); 
alert(search(text2,'object')); 

演示: http://jsfiddle.net/EaZrs/5/

2

最接近的是搜索DOM,而不是像find

closest docs:

說明:獲取選擇相匹配,在當前元素開始,通過DOM樹前進了第一個元素。

find docs:

說明:獲取每個元素的後代在當前匹配的元素,通過一個選擇器,jQuery對象,或元件過濾。

所以text1的應該是closest和text2的應該是find

function getDomPartUp(text,htmlTag){ 
    return $(text).closest(htmlTag).html(); 
} 

function getDomPartDown(text,htmlTag){ 
    return $(text).find(htmlTag).html(); 
} 

var text1='<object>some text + html elements </object>'; 
var text2='<div><object>some text + html elements </object></div>'; 
alert(getDomPartUp(text1,'object')); 
alert(getDomPartDown(text2,'object'));​ 

使用.html得到你想要的文字。

JSFiddle DEMO


更新:

要做到這一點的一個方法:

function search(text,htmlTag){ 
    var $up = $(text).closest(htmlTag); 

    if ($up.length > 0) 
     return $up.html(); 

    var $down = $(text).find(htmlTag); 

    return $down.length > 0 ? $down.html() :""; 
}  

var text1='<object>some text + html elements </object>'; 
var text2='<div><object>some text + html elements </object></div>'; 
alert(search(text1,'object')); 
alert(search(text2,'object'));​ 

JSFiddle DEMO

+1

1. $(text)應該轉換爲dom? 2.你的代碼是什麼,而不是我的?3。發現也不適用於text1 – Yosef 2012-02-12 13:08:50

+1

@Yosef。沒有那個' ...'應該在頁面DOM中,而不僅僅是一個字符串。 – gdoron 2012-02-12 13:10:11

+0

可否請您提供該參考?或編寫解決方案,將工作? – Yosef 2012-02-12 13:13:23

0

嘗試爲元素的子元素使用find(),並使用andSelf()來獲取元素本身。

+0

'andSelf()'如何在這裏幫助? – gdoron 2012-02-12 13:22:09

+0

和自己?它如何幫助? – Yosef 2012-02-12 13:27:01

+0

當你發送'text1'你想獲得html,對吧? – Hadas 2012-02-12 13:30:21

相關問題