请参阅Accessing Parameters *and* Events in function from jQuery Event
如何更改此代码,使$(this)在单击事件中的行为类似于$(this),而不是返回完整的html文档?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-language" content="en">
<meta name="author" content="">
<meta http-equiv="Reply-to" content="@.com">
<meta name="generator" content="PhpED 5.2">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="creation-date" content="09/20/2007">
<meta name="revisit-after" content="15 days">
<title>Untitled</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function functionToCall(clickedItem) {
return function (ev) {
// both accessible here
alert(ev.type);
console.debug(clickedItem);
alert(clickedItem.attr('id'));
}
}
$(document).ready(function() {
$("a").live("click", functionToCall($(this)));
});
</script>
</head>
<body>
<a href='#' id="test">Test</a>
</body>
</html>发布于 2011-08-24 13:17:01
像这样重构它:
function functionToCall(ev) { // ev -> event is passed by jQuery by default
var clickedItem = this; // this refers to the element that is clicked
// both accessible here
alert(ev.type);
//console.debug(clickedItem); // this may not work in all browsers. see my fiddle for a failsafe.
// failsafe: check if console exists
if(window.console && window.console.debug) { console.debug(clickedItem); }
alert($(clickedItem).attr('id')); // $() to get jQuery object
}
$(document).ready(function() {
$("a").live("click", functionToCall); // just need to pass a function reference
}); 演示:http://jsfiddle.net/mrchief/ZYGVz/1/
发布于 2011-08-24 13:18:02
尝试如下所示:
$("a").each(function(){
$(this).live("click",functionToCall($(this)));
})https://stackoverflow.com/questions/7170727
复制相似问题