1

jQuery で最初の子を選択するのに少し問題があります。たくさんのifステートメントを避けるためにこれをやろうとしています。基本的に、ボタンをクリックします。このクラス セレクターは、JS でクリックを処理するように設定されています。JSに入ったら、クリックしたばかりのアイテムの子を取得したいのですが、喜びがありません。

これが私のJSにあるものです:

$('.itemClicked').click(function(){

var id = $(this).attr('id').first();
    // it can't find the method first() here. If I just find the id, I get the 
    // correct ID of what I just clicked.          

var test = id.first();
    // I tried the above to seperate the ID from the first() method request
    // no joy with this either.

test.toggleClass("icon-tick");
    // this is my ultimate aim, to toggle this icon-tick class on the item
    // clicked.

});

ここで私を助けていただければ、事前に感謝します。私はおそらく愚かなことをしているだけですが、それが何であるかを理解するのに苦労しています.

4

3 に答える 3

8

.attr('id')ID を jQuery オブジェクトではなく文字列として返すだけなので、現在のバージョンは機能しません。また、.first()子ではなく、jQuery コレクションから最初のアイテムを返します。

だから、あなたはただ欲しい:

var test = $(this).children().first();

また:

var test = $('>:first-child', this);

また:

var test = $(this).children(':first');

または (新しいブラウザーの場合):

var test = $(this.firstElementChild);

Chrome 25 でのjsperf.firstElementChildテストでは、メソッドは非常に高速でしたが、MSIE < 9 では使用できません.children()。.first() was the fastest portable option, and the>:first-child' メソッドは非常に低速でした。

于 2013-02-13T14:53:47.843 に答える
1

多分

$('.itemClicked').click(function(){
    $(':first-child',this).toggleClass('icon-tick');
});

あなたが求めているものです。

実際の例: http://jsfiddle.net/ySMLG/

于 2013-02-13T14:54:05.347 に答える
-2

クリックしたアイテムのクラス「icon-tick」を切り替えるだけの場合は、次のように動作します。

$('.itemClick').click(function () {
    $(this).toggleClass('icon-tick');
});

ステートメント:

$(this).attr('id').first()

attr() メソッドは jQuery オブジェクトではなく属性の値を返すため、チェーン可能ではないため機能しません。

于 2013-02-13T14:58:24.217 に答える