2014-12-03 57 views
0

我有3列,其中包括動態生成的列表元素(li標籤) 這些有一個屬性,我試圖用來隱藏一行/ li當字符數量是沒有達到這個元素(通過使用不透明屬性)JavaScript通過選擇HTML屬性不起作用來隱藏li標籤

我有它的工作...有時,有時它只適用於3列中的一列... 因此,我會很感激一些洞察什麼是錯誤的這裏。

(function() { 

    // selecting all elements with class 
    // class="checkout-tariff-meta-maybe-hidden" 
    var elems = $(".checkout-tariff-meta-maybe-hidden"); 

    // interact between founded elements 
    for (var k = 0; k < elems.length; k++) { 
     // getting text content size 
     var textSize = elems[k].textContent.length; 
     // if text size is one we will hide element 
     if (textSize <= 1) { 
     // hiding 
     elems[k].style.opacity = "0"; 

     } 
    } 

}()); 
+0

這是不可取的褪色頁面上的文本。如果你不希望他們被看到,請完全刪除它們。 – 2014-12-03 19:45:14

+1

是的,但如果我刪除它們,然後列高度變化,不再與其他兩個對齊。所以我找到了這個.. – scaap 2014-12-03 19:47:31

+0

將包含元素加倍,給外部一個高度,然後隱藏內部。這種方式,身高保持不變。 – 2014-12-03 19:51:36

回答

1

你可以去開門見山,做一些這樣的:

// Adjust as needed 
    $(document).ready(function() { 
    $('.checkout-tariff-meta-maybe-hidden').filter(function() { 
    return $(this).text().length<3; }).hide(); 
}); 
+1

確實看起來更光滑,謝謝。但不知何故仍然沒有得到承認。否則,我會使用這個和fadeTo方法顯示在下面... – scaap 2014-12-03 19:56:33

1

由於您使用jQuery的,躲你可以做一個元素:

$(elems[k]).hide(); 

或者,如果你正在尋找隱藏而不破壞(因爲你改變的不透明度,我認爲是這樣),看看.fadeTo()

$(elems[k]).fadeTo(1, 0); 
+0

我會使用fadeTo,但我不明白爲什麼它不選擇這個類。 – scaap 2014-12-03 19:58:05

0

你可能看...

if (textSize <= 1) { 
    elems[k].style.opacity = "0"; 
    } else { 
    elems[k].style.opacity = "1"; 
    } 

...確保它們在更長時間後重新開啓。