2011-02-26 8 views
1

使用して要素のidを見つけるために、これは、htmlコードどのようにjQueryの

<body>  
    < div id="map" > 

私は放火犯で

var pageFrom= $(theElement).parentsUntil('body');  
var pageFromId = $(pageFrom).attr("id"); 

は私が見るマップを見つけるために体を見つけるまで、私は両親を横断していますですpageFrom [DIV#1 map.current]

問題はpageFromIdが "ある" と、それがあるべき "これを試してみてください"

+0

あなたは[で、ライブデモを投稿することができますJS Fiddle](http://jsfiddle.net/)または[JS Bin](http://jsbin.com/)を参照してください。 –

答えて

2

をマッピングすることである:

$(theElement).closest('map'); 
or 
$(theElement).closest('body').attr('id'); 
+0

ありがとう、これは私のために働いた! – Fireflight

0

たぶん

pageFrom.first().attr("id") 

しかし、必要なものについてもっと具体的に説明する必要があります。要素と身体の間にすべての親が本当に必要ですか?それ以外の場合は、.closestを使用できます。

また、あなたの初心者コードでは、それは既にjqueryオブジェクトであるため、$(pageFrom)を使用する必要はありません。

0

私はあなたがここで何を求めているのかよく分かりません。しかし、ここでパターンが<body>はIDを持っている、そしてそれはあなたがつかむしようとしているものだ、これはトリックを行う必要がありますような単純なものの後<div>最初ということであれば:

$('body').find('div:first').attr('id'); 

上向きにトラバースする理由はありません文書の本文には、常に1つあるべきですから、そこから始めて作業しないのはなぜですか?ドキュメントから

0

:それは一致した要素 に達するまで

DOM要素の集合を表すjQueryオブジェクトが与えられると、 .parentsUntil()メソッドは、これら 要素の祖先を通して を横切ります メソッドの引数に渡されたセレクタによって呼び出されます。結果の jQueryオブジェクトには、.farentsUntil() セレクタで一致する のすべての祖先が含まれますが、 の祖先は含まれません。

つまり、attrは要素の配列ではなく最終要素自体で呼び出すようにしています。あなたは何をしたいのですか?本文の最初の要素を探したいのですか、セレクターに一致する最も近い要素を探したいのですか?

// find first element of a type 
$('div:first').attr('id') 

// find closest element of a type 
$(this).closest('div').attr('id') 
3

あなたがparentsUntil()[docs]メソッドを使用している場合、それは離れて、それらの最も遠いへの出発点最も近いものの中から注文した先祖のコレクションを再調整されます。

このため、IDを取得するには、コレクションの最後のものにアクセスする必要があります。

var pageFrom= $(theElement).parentsUntil('body'); 
var pageFromId = pageFrom.last().attr('id'); 

または

var pageFrom= $(theElement).parentsUntil('body'); 
var pageFromId = pageFrom.slice(-1).attr('id'); 

あなたはまた、要素のプロパティとしてIDをつかむことができます注:

var pageFromId = pageFrom.get(-1).id;