Tôi mới sử dụng jQuery và đã tạo các bảng theo thẻ, theo hướng dẫn trong JavaScript và jQuery: Hướng dẫn thiếu , có dòng đầu tiên khi tác giả thực hiện việc này:
var target = $(this);
Nhưng tôi đã cố gắng làm theo cách đó
var target = evt.target;
và tôi đã nhận được lỗi đó:
Uncaught TypeError: Object http://localhost/tabbedPanels/#panel1 has no method 'attr'
Và khi tôi đổi evt.target
lại $(this)
, nó hoạt động như một lá bùa.
Tôi muốn biết sự khác biệt giữa $(this)
và evt.target
?
Đây là mã của tôi trong trường hợp bạn cần nó:
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Tabbed Panel</title>
<style>
body {
width : 100%;
height: 100%;
}
#wrapper {
margin : auto;
width : 800px;
}
#tabsContainer {
overflow: hidden;
}
#tabs {
padding:0;
margin:0;
}
#tabs li {
float : left;
list-style:none;
}
#tabs a {
text-decoration:none;
padding : 3px 5px;
display : block;
}
#tabs a.active {
background-color : grey;
}
#panelsContainer {
clear: left;
}
#panel1 {
color : blue;
}
#panel2 {
color : yellow;
}
#panel3 {
color: green;
}
#panel4 {
color : black;
}
</style>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="wrapper">
<div id="tabsContainer">
<ul id="tabs">
<li><a href="#panel1">Panel1</a></li>
<li><a href="#panel2">Panel2</a></li>
<li><a href="#panel3">Panel3</a></li>
<li><a href="#panel4">Panel4</a></li>
</ul>
</div>
<div id="panelsContainer">
<div id="panel1" class="panel">
this is panel1
</div>
<div id="panel2" class="panel">
this is panel2
</div>
<div id="panel3" class="panel">
this is panel3
</div>
<div id="panel4" class="panel">
this is panel4
</div>
</div>
</div>
</body>
</html>
script.js:
$(function(){
$("#tabs a").click(function(evt){
var target = evt.target,
targetPanel = target.attr("href");
$(".panel").hide();
$("#tabs a.active").removeClass("active");
target.addClass("active").blur();
$(targetPanel).fadeIn(300);
evt.preventDefault();
});
$("#tabs a:first").click();
})
$(evt.target)
và (trong trường hợp này) cũng có kết quả tương tự. Các .attr()
phương pháp được cung cấp bởi các đối tượng jQuery, không phải là yếu tố chính
this
là một tham chiếu đến phần tử DOM DOM.$()
là định dạng do jQuery cung cấp để biến phần tử DOM thành Đối tượng jQuery. sử dụngevt.target
bạn đang tham chiếu một phần tử, trong khi với$(this)
bạn đang tham chiếu một đối tượng có tham số mà chúng ta có quyền truy cập.