2014-12-03 356 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"; 
    } 

...确保它们在更长时间后重新开启。