2012-01-30 26 views
3

テーブル内のクラスxを持つdivを動的に作成しました。 JavaScriptを使ってこのdivのテーブルの親をキャッチして、それに特定のクラスを与えるにはどうすればよいですか?要素の親表を取得

trとtdの親ノードを通過することができませんでした。何か案は?

+2

あなたの質問には既に回答がありますので、あなたのスクリプトはparentNodeチェーンの中で ' 'と'

'の間に ''をおそらく認識していないとコメントします。 Broswersはそれを暗黙的に挿入します。 – ori

答えて

3

jQueryをお持ちの場合、これは非常に簡単です。あなたのHTMLは、このようなものである場合:それはあなたが(与えるセレクタに一致する要素に到達するまでclosest機能は、DOMツリーに上がる

$('div.mydiv').closest('table').addClass('someclass'); 

<table> 
    <tr><td><div class="mydiv">hi</div></td></tr> 
</table> 

次に、あなたのような何かを言うことができますこの場合、table)。

6

ライブラリが含まれていないと仮定します。

すでにDOMツリーに挿入された新しいのdivのを想定し
function getNearestTableAncestor(htmlElementNode) { 
    while (htmlElementNode) { 
     htmlElementNode = htmlElementNode.parentNode; 
     if (htmlElementNode.tagName.toLowerCase() === 'table') { 
      return htmlElementNode; 
     } 
    } 
    return undefined; 
} 

var table = getNearestTableAncestor(node); 
if (table) { 
    table.className += ' certain'; 
} 
0

、あなたはjqueryのを使用することができます。

$(div_node).parents('table')[0].addClass('certain_class'); 

ベア同様のことを行うことができますが、それぞれを反復するループを記述する必要がありますjavascriptの.parentNode、テストあなたのHTMLは、このようなものである場合には、jQueryのを使用して、テーブル、等...

0

だ場合:

<table> 
    <tr><td><div class="divClass">Content</div></td></tr> 
</table> 

親テーブルを次のように呼び出すことができます。

$( 'div.divClass'); parent();コードの下

は、あなたのテーブルのHTMLを与える:

警告(。。$( 'div.divClass')親()HTML());

あなたが望むよう$('div.divClass').parent();を使用することができます...

乾杯!

関連する問題