2016-05-20 81 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( '顯示')(」 [「+類別+ 」過濾數據值=]「。」');'使用該無需要使用查找,因爲類過濾器有數據attr – 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

我只希望添加顯示的類到李項目的數據值匹配的類別:) –

+0

@JesseC,而不是隱藏其他?請確認。在這種情況下,只需刪除方法的第一行。 – gurvinder372

+0

是的,當選擇添加類'show'時,從所有其他中刪除。你所建議的代碼並不是增加這個類,但發現也許是問題所在。 –

0
$(".filter[data-value='" + category + "']").addClass('show');