2017-02-09 6 views
0

私は以下のjQueryを使っていますが、私は "this"を "this"の中に使用しているので、答えが出るかもしれません。jQuery this inside this

$('.field-name-field-choose-a-service input:checked').each(function() { 
    var unitname = $(this).closest('.form-item').text(); 
    $('.field-name-field-choose-a-package .form-type-checkbox').each(function() { 

     if($(this).children('.views-field-field-bookable-unit-type span').text() == unitname) { 
     $(this).show(); 

     } 
    }); 

    }); 

"this"を現在の関数で起こっていることにのみ適用するにはどうすればよいですか?

申し訳ありませんが、これは十分詳細ではない、jQueryの初心者のビットです!

+0

を使用してみてください? – Jer

+0

'this'を内部' each'の外側にキャッシュすることができます。外側の 'each'の始めに' var $ checkedService = $(this); 'を追加し、' each'の内側でこれを使用してください。 – Tushar

答えて

2

.each()」の文脈の中にいるときは、「this」の意味が変更されます。 「外側」の参照が必要な場合は、変数でキャプチャします。

$('.field-name-field-choose-a-service input:checked').each(function() { 
    var outerThis = this; 
    var unitname = $(this).closest('.form-item').text(); 
    $('.field-name-field-choose-a-package .form-type-checkbox').each(function() { 
     // "this" refers to the "inner this" 
     // "outerThis" refers to the "outer this" 
    }); 
}); 

});

+0

OPは、$(this)をキャッシュしてjQueryメソッドを直接呼び出せるようにしたいと思います。 – Tushar

+0

ありがとうございました。私は可能な限りこれを受け入れる。 – Collins

0

が動作していない、正確にどのような変数で$(this)要素を格納し、その変数を使用して代わりに$(this)

+0

[コードブロックのフォーマット方法は?](// meta.stackoverflow.com/q/251361)を参照してください。今のところ、私は答えを編集しました。 – Tushar