我想通过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打开我的开发者控制台,我可以看到动态设置的背景颜色样式。当我切换回改变可见性时,我的控制台中没有动态设置的样式;它显示visibility
为hidden
,没有覆盖它。但它应该被覆盖,不应该吗?
请记住,问题不在于我看不到我的元素,而是动态应用的样式在我的开发者控制台中没有显示任何内容。此外,如果我取消选中控制台中的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>
这是一个错字。我有visibile
而不是visible
。 :d
答案 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)