我有以下代码,它在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");
}
});
});
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
更重要的是,li标签是动态添加的......
取决于实际的html,但hasClass在检测元素是否具有给定类时应始终使用
所以改变if到
if($(this).hasClass("active")
Run Code Online (Sandbox Code Playgroud)
如果元素具有类,active并且不仅class属性的值恰好是值"active",那么这将是真的
例如,如果你有
<img class=" active image" />
Run Code Online (Sandbox Code Playgroud)
那hasClass("active")将是真的,但你的测试将是错误的甚至是
<img class=" active " />
Run Code Online (Sandbox Code Playgroud)
由于活动周围的空白,可能会在不同的浏览器中区别对待
根据评论编辑
你几乎不应该单独依赖元素的位置.你应该依赖职位的唯一情况是当自己的位置是关键时.例如当斑马着色一张桌子
我建议您将代码更改为以下内容
$("#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);
});
});
Run Code Online (Sandbox Code Playgroud)
有几点值得注意.
src两个图像src相应的| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |