使用jquery .css()不会改变可见性

时间:2013-07-30 14:16:03

标签: javascript jquery css jquery-selectors

我想通过jquery的css()函数更改元素的可见性,但它不起作用。有趣的是在我的网站上的其他地方使用相同的语法,我甚至可以在同一行代码中更改CSS参数和值,它将起作用。但它不适用于可见性。

我的查询:

$('.promo_container').each(function(promoIndex){

    var $_this = $(this);

    $_this.css({'visibility':'visible'});

    console.log($_this); //This is the correct output ie. the right element

});

令人困惑的是我在另一个js文件中使用此语法并且它有效。让我感到震惊的是,如果我改变这条线......

$_this.css({'visibility':'visible'});

......对此...

$_this.css({'background':'red'});

......它的作品!!我用chrome打开我的开发者控制台,我可以看到动态设置的背景颜色样式。当我切换回改变可见性时,我的控制台中没有动态设置的样式;它显示visibilityhidden,没有覆盖它。但它应该被覆盖,不应该吗?

修改

请记住,问题不在于我看不到我的元素,而是动态应用的样式在我的开发者控制台中没有显示任何内容。此外,如果我取消选中控制台中的visibility:hidden参数,则该元素会显示,因此这是隐藏元素的唯一内容。

我刚试过这个:

$_this.show();

它不起作用。元素仍然隐藏。我知道我没有针对错误的元素,因为再一次,如果我在不更改选择器的情况下更改CSS就可以正常工作;唯一的问题是CSS设置可见性。

$_this的CSS:

overflow:hidden;
visibility:hidden;
position:relative;
height:100%;

HTML应该不是问题......但这是我元素的标记:

<div class="promo_container" data-random="{if $controller->startOn == 1}random{/if}">
    ...
    //That is Smarty syntax inside the element above, 
    it is working fine and should not be affecting anything
</div>

编辑2

这是一个错字。我有visibile而不是visible。 :d

4 个答案:

答案 0 :(得分:0)

我猜有一个CSS代码覆盖了你的代码。你能试试吗

$(this).css({'visibility':'visible !important','display':'block',opacity:1}); 

答案 1 :(得分:0)

你使用:$ _this.css({'visibility':'visible'});只有你有:

css中的

可见性:隐藏 但如果你使用display:none;在你的CSS中

你应该使用jquery show function

您的代码将是:

$('.promo_container').each(function(promoIndex){

    var $_this = $(this);

    $_this.show();

    console.log($_this); //This is the correct output ie. the right element

}

答案 2 :(得分:0)

我独立尝试了你的代码,以下似乎工作正常:

$('.promo_container').each(function(promoIndex){
    alert(promoIndex);
    var $_this = $(this);
    $_this.css({'visibility' : 'visible' });
})

请参阅演示:http://jsfiddle.net/audetwebdesign/9mgVt/

还有其他事情......

答案 3 :(得分:-1)

有几种方法可以隐藏元素。

例如,它可以有display: none CSS属性或hidden="hidden" HTML属性。

jQuery有一个方法.show()来解决所有这些情况。