请教大神,下面这个用jquery写的简单的选项卡,我将它改写成面向对象程序,但是不执行,我感觉可能是this的用法有错,可是不知道错在那里?我是初级小白。
非常感谢,会有赞赏给被采用评论者!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/a...;></script>
<title>Title</title>
<style>
#tab li {height:50px;width:100px;float:left;background-color:gray;}
#content li{height:200px;width:300px;background-color: deepskyblue;display: none;}
#content li:first-of-type{display:block;}
#tab .current {background-color: yellowgreen;}
</style>
</head>
<body>
<ul id="tab">
<li class="current">tab1</li>
<li>tab2</li>
<li>tab3</li>
</ul >
<ul id="content">
<li >content1</li>
<li>content2</li>
<li>content3</li>
</ul>
<script>
$(document).ready(function(){
$("#tab li").click(function(){
var i=$(this).index();
$("#tab li").removeClass("current");
$(this).addClass("current");
$("#content li").css("display","none");
$("#content li").eq(i).show();
})
})
</script>
</body>
</html>
我的面向对象写法:
$(document).ready(function(){
function Tab (element,showelement) {
$(this).element = element
$(this).showelement = showelement
}
Tab.prototype.showcontent=function(){
$(this).element.click(function(){
var $This = $(this)
var i=$This.index()
$(this).element.removeClass("current")
$This.addClass("current")
$(this).showelement.css("display","none")
$(this).showelement.eq(i).show()
})
}
var a= new Tab($("#tab li"),$("content li"));
a.showcontent();
按照原来的布局和样式,面向对象的写法如下: