我有以下代码,它在firefox和chrome中运行良好,但在Internet Explorer中无效...
$("#nav-tabs").on("click", "a", function(e) {
e.preventDefault();
$(this).tab('show');
$('li#test').each(function() {
if($(this).attr('class') == "active")
{
//Active class is applied
$(this).children().children().attr("src", "assets/img/button_home_selected3.png");
}
else
{
$(this).children().children().attr("src", "assets/img/button_home_plain.png");
}
});
});
使用IE ???
的条件语句是否有任何问题这是HTML
<ul id="nav-tabs" data-tabs="tabs">
<li id="test" style="list-style: none;" class="active">
<a href="#home" data-toggle="tabs" ><img src="assets/img/button_home_selected3.png" id="test2" width="83" /><span>Home</span></a>
</li>
</ul>
此外,li标签是动态添加的......
答案 0 :(得分:5)
取决于实际的html,但在检测元素是否具有给定类时应始终使用hasClass
所以将if更改为
if($(this).hasClass("active")
如果元素具有类active
并且class
属性的值恰好是值“active”,则为true
E.g。如果你有
<img class=" active image" />
然后hasClass("active")
将成立,但您的测试将是错误的,甚至是
<img class=" active " />
由于活动周围的空白,在不同的浏览器中可能会有不同的对待
根据评论编辑
你几乎不应该单独依赖元素的位置。你应该依赖职位的唯一情况是当自己的位置是关键时。例如。斑马着色表时
我建议您将代码更改为以下
$("#nav-tabs").on("click", "a", function(e) {
e.preventDefault();
$(this).tab('show');
$('li#test').each(function() {
var self = $(this),
source = self.hasClass("active") ?
"assets/img/button_home_selected3.png") :
"assets/img/button_home_plain.png";
self.children().
.find(img:first).attr("src", source);
});
});
需要注意几点。
src
src