0

this私の愚かさを許してください。キーワードを使用して要素を非表示にする方法を誰かに説明してもらえますか? たとえば、これは機能しています:

jQuery(document).ready(function($){
    if($('.someclass').length==1){
        $('.someclass').hide();
    }  
});

しかし、これは私には無理です:

jQuery(document).ready(function($){
    if($('.someclass').length==1){
        $(this).hide();
    }  
});

ありがとうございました!

4

6 に答える 6

2

使用する必要がありますかthis(その場合は、他の回答を参照してください)、または単にセレクターの重複を回避しようとしていますか? これはどうですか?

jQuery(document).ready(function($){
  var elem = $('.someclass');
  if(elem.length == 1){
    elem.hide();
  }  
});
于 2013-05-04T12:36:30.653 に答える
2

あなたの質問に答えるには、「.someclass」オブジェクトが呼び出し元のオブジェクトである場合にのみ「this」を参照できます。これは、jQuery のイベントとほとんどのコールバック関連の内部で確認できます。

すなわち:

$('.someclass').each(function() {
    $(this).hide();
});

$('.someclass').click(function() {
    $(this).hide();
});

ただし、これを行うと、オブジェクトと一致するオブジェクトを 2 回ラップすることになります。

コードが表すことを行う最善の方法は、ここでは jQuery オブジェクトの長さを照会する必要がないため、if ステートメントを完全に削除することです。jQueryは、空の結果セットに対して関数を実行しないので、単純です...

jQuery(document).ready(function($){
  $('.someclass').hide();
});

...必要なだけです。

于 2013-05-04T12:45:54.563 に答える
2

重複を避けようとしている場合は、次のように簡単にする必要があります。

$(function() {
    $('.someclass').hide();
});

確認する必要はまったくありませんlength。jQuery は、要素がなければ何もしないほどスマートです。

于 2013-05-04T12:49:46.913 に答える
0

そのような目的で使用する必要はありませんthis- 一方、次の例を考えてみましょう:

$('.someClass').each(function(){

    // maybe some logic here
    $(this).hide();

});

この場合、this各ループで現在の DOM 要素を参照します。

于 2013-05-04T12:36:59.810 に答える
0

あなたはこれを行うことができます:

$('.someclass').each(function() {
  $(this).hide();
});
于 2013-05-04T12:37:12.747 に答える
0

変数thisは、イベント ハンドラー、eachメソッド、またはこのようなものに含まれている必要があります。例えば:

$('.someclass').each(function () {
    $(this).hide();
});
于 2013-05-04T12:41:07.030 に答える