2011-10-21 6 views
1

divテーブルの配列をplayerテーブルdiv内に作成しています。クラスのすべてのdivタグを取得しています。クラス名を持つdivには、入力フィールドとリンクフィールドがあります。JSでHTMLオブジェクト内のオブジェクトにアクセスする

$(divarray[j]+' .link').hide(); 
$(divarray[j]+' a').remove('.link'); 

しかし、それは働いていない:私は私が仕事だろうと思ったことはようなものになるだろう

(...など、クラスを追加、削除)これらを操作できるようにしたいです。何かご意見は?これはあなたが上でのみ動作する必要がある場合も

$(divarray[j]).find('.link:first').hide(); 

を試してみてください

$(divarray[j]).find('.link').hide(); 
$(divarray[j]).find('a').remove('.link'); 

istructions試してみてください、私はそれは単純なものだと確信していますが、それはJS :)

var divarray = $('#player-table > .players'); 
     for(var j = 0; j < 10; j++){ 
     $(divarray[j]).removeClass("players"); 
     $(divarray[j]).addClass("selected_players"); 
     $('#debug').append(divarray[j]); 
     $(divarray[j]+' a').hide(); 
    } 

答えて

3

まず、jQueryオブジェクトまたはDOMノードを文字列に連結して新しいセレクタを作成するだけではいけません。 jQueryは、すでにオブジェクトまたはDOMノードがあり、他の関連ノードを探したい場合に、このような状況のためのメソッドを提供します。

第2に、jQueryでは要素のセットを処理する方がはるかに優れています。ここであなたのコードは、より多くのjQueryのような方法です。これは単なる例で、私はHTMLの構造を知らないからです。正しい要素を選択して適用するように調整する必要があります。

$('#player-table > .players').slice(0,10) // gets the first 10 elements 
.removeClass("players")     // removes the class from all of them 
.addClass("selected_players")   // adds the class 
.find('a').hide().end()     // finds all descendant links and hides them 
.appendTo('#debug');      // appends all elements to `#debug` 

おそらく最後の行にはセミコロンが1つしかありません。つまり、このコードブロック全体が1つのステートメントにすぎませんが、複数の行に分割すると読みやすくなります。

fluent interfaceというjQueryを大々的に利用しているために動作します。これは、($(divarray[j]))のように、jQueryオブジェクトを繰り返し作成することを避けることができます。

もう1つの利点は、一度にすべての要素を処理でき、「通常の」DOM操作方法と同じように、すべての要素を明示的に反復処理する必要がないことです。

JavaScriptを学ぶには、MDN JavaScript Guideをお勧めします。
jQueryにはtutorialsと非常に良いAPI documentationがあります。

基本事項を十分に理解してください。最初に指示を読まなくてもツールを使用できるとは思えません。

+0

正確に私が知りたいと思ったもの。残念ながら、いくつかの成果物の時間的制約のために、私はJSとJQueryにすべてのドキュメントを通して価値のある時間を与えることができませんでした。リンクをありがとう、私は確かに数日後にそれらを通過します。 – Tony

1

で初めてです最初の要素

希望すると助かります