2016-05-20 10 views
0

関数呼び出し時にli項目内の要素にクラスを追加しようとしています。私は正しい値を出力することができますが、子供の発見は<i>です。私は<i>正しい入れ子のを見つけて、クラスを追加することができれば、それを解決するだろう 'ショー' :)jquery要素を見つけて要素にクラスを追加する

JSコード:

filterMarkers = function(category) { 
    for (i = 0; i < markers1.length; i++) { 
     marker = gmarkers1[i]; 
     // If is same category or category not picked 
     if (marker.category == category || category.length === 0) { 
      marker.setVisible(true); 
      // Show the tick icon 
      $(".filter").find("[data-value='" + category + "']").addClass('show'); 

     } 
     // Categories don't match 
     else { 
      marker.setVisible(false); 
     } 
    } 
} 

HTMLコード:見れ

<ul class="drop-down"> 
    <li class="filter blue" data-value="" onclick="filterMarkers('');">All <i class="fi-check"></i></li> 
    <li class="filter yellow" data-value="test-one" onclick="filterMarkers('test-one');">Sales <i class="fi-check"></i></li> 
    <li class="filter red" data-value="test-two" onclick="filterMarkers('test-two');">Incentives <i class="fi-check"></i></li> 
    <li class="filter grey" data-value="test-three" onclick="filterMarkers('test-three');">Conferences <i class="fi-check"></i></li> 
    <li class="filter orange" data-value="test-four" onclick="filterMarkers('test-four');">Team building <i class="fi-check"></i></li> 
</ul> 
+0

'$をあなたのコードを簡素化(」フィルタリング[データ値= '」+カテゴリ+ "']")addClass( 'ショーは');'このコマンドのno形式を使用しますクラスフィルタにデータattrがあるのでfindを使う必要があります – guradio

答えて

1

filterMarkers方法、

  1. 引数として渡されるカテゴリを単純に表示し、他のすべてを非表示にしたい場合

  2. 引数が渡されない場合はすべてを非表示にします。

filterMarkers = function(category) { 
    $(".filter").removeClass("show"); //remove show class from all 
    if(category.length > 0) 
    { 
     $(".filter[data-value='" + category + "']").addClass('show'); 
    } 
    for (i = 0; i < markers1.length; i++) 
    { 
     marker = gmarkers1[i]; 
     marker.category == category || category.length === 0 ? marker.setVisible(true) : marker.setVisible(false); 
     } 
    } 
} 
+0

私は、データ値がカテゴリに一致するli項目にshowクラスを追加したいと思っています:) –

+0

@JesseC他を隠さないでください。ご確認ください。その場合は、メソッドの最初の行を削除するだけです。 – gurvinder372

+0

はい、クラス 'show'を追加すると、他のクラスからすべて削除されます。あなたが提案したコードはクラスを追加していませんが、おそらく問題を見つけるでしょう。 –

0
$(".filter[data-value='" + category + "']").addClass('show'); 
関連する問題