2012-02-12 6 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

? –

+0

@LightnessRacesinOrbit。それはDOMelementでundifinedです。私の答えを見てください。 – gdoron

+0

@gdoron:いいえ、より良い質問をするためにOPを訓練しようとしています。 –

答えて

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')); 

デモ: 、その後、結果を_is_何http://jsfiddle.net/EaZrs/5/

2

DOMを検索していますが、findのようなものではありません。

closest docs:

説明:現在の要素から始まり、DOMツリーをアップ進んで、セレクタに一致する最初の要素を取得します。

find docs:

説明:現在の選択によってフィルタリング整合要素の組、jQueryオブジェクト、または要素の各要素の子孫を取得します。

ので、テキスト1のためにそれがclosestであるべきで、テキスト2のためにそれが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


更新:

1つの方法でそれを行うには:

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. $(テキスト)はdomに変換する必要がありますか? 2.代わりにあなたのコードは何ですか?また、テキスト1のために動作しないことを見つける。 – Yosef

+1

@ Yosef。いいえ、それは ' ... 'はページDOM内にあるはずです。 – gdoron

+0

あなたはそれを参考にしてもいいですか?それともうまくいくのでしょうか? – Yosef

0

要素の子要素にはfind()を、要素自体を取得するにはandSelf()を使用してください。

+0

ここで 'andSelf()'はどのように役立ちますか? – gdoron

+0

andSelf ??どのように役立つことができますか? – Yosef

+0

'text1'を送信すると、htmlを取得したいのですが、 – Hadas

関連する問題