首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery currying

jquery currying
EN

Stack Overflow用户
提问于 2011-08-24 13:14:00
回答 2查看 585关注 0票数 0

请参阅Accessing Parameters *and* Events in function from jQuery Event

如何更改此代码,使$(this)在单击事件中的行为类似于$(this),而不是返回完整的html文档?

代码语言:javascript
复制
 <!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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-24 13:17:01

像这样重构它:

代码语言:javascript
复制
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/

票数 1
EN

Stack Overflow用户

发布于 2011-08-24 13:18:02

尝试如下所示:

代码语言:javascript
复制
$("a").each(function(){
  $(this).live("click",functionToCall($(this)));
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7170727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档