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
? –
@LightnessRacesinOrbit。それはDOMelementでundifinedです。私の答えを見てください。 – gdoron
@gdoron:いいえ、より良い質問をするためにOPを訓練しようとしています。 –