2

これは私を夢中にさせています...しかし、私は確かに何かが恋しいです。

したがって、HTML は次のようになります。

<ul>
  <li><span>Product spec name</span><span>232112412</span></li>
  <li><span>Product spec name</span><span>cm</span></li>
  <li><span>Product spec name</span><span>80 cm</span></li>
  <li><span>Product spec name</span><span>75 cm</span></li>
  <li><span>Product spec name</span><span>cm</span></li>
</ul>

だから私が達成したいのは、2番目のスパンに含まれる文字が2文字以下のリスト要素を非表示にすることです。それらを変数に入れてループし、現在のアイテムの長さが2以下の場合、jQueryはその親を非表示にすることを考えました。

私が書いたコードは次のとおりです。

$(document).ready(function () {
     var pspec = $('ul li span:nth-child(2)');

     for(i=0;i<pspec.length;i++) {
        if($(pspec[i]).text().length <= 2) {
            $(this).parent().hide();
        }
     }
});

しかし、このコードではうまくいきません... 私はまだ jQuery の初心者だと思っています。

前もって感謝します!

よろしくお願いします、マット

4

4 に答える 4

1

デモ: http://jsfiddle.net/PFaav/

$(document).ready(function () {
  $('ul li').filter(function () {
    return $(this).find('span').eq(1).text().length <= 2;
  }).hide();
});

置き換えるとコードが機能します

$(this).parent().hide();

これで

$(pspec[i]).parent().hide();
于 2012-09-19T15:27:55.263 に答える
1

jqueryとjavascriptを使用して混合するjQuery each代わりに、for

$(document).ready(function(){
     var pspec = $('ul li span:nth-child(2)').each(function(){    
        if($(this).text().length <= 2) {
          $(this).parent().hide();
          }
     });
});
于 2012-09-19T15:23:48.340 に答える
1

以下を試してください、

$(document).ready(function(){
    $.each ($('ul li'), function (idx, el) { 
        var $span = $(this).find('span').eq(1);  //2nd span
        if ($span.text().length <= 2) { 
           $span.parent().hide();
        }
    });
});
于 2012-09-19T15:24:33.687 に答える
1

フィルター機能を使う

$('ul li span:nth-child(2)').filter(function() {
    return $(this).text().length < 3; // <-- get 2nd span elements whose text length < 3
}).parent().hide();​ // <-- hide parent elements of the returned elements

http://jsfiddle.net/y9dSU/

于 2012-09-19T15:26:23.503 に答える