1

如何将 $(this) 对象传递给看起来像这样的函数

$('#selected').click(dosomething)

dosomething 是功能。我试着做一些事情,比如......

$('#selected').click(dosomething($(this)))

但似乎我做错了...

4

4 回答 4

5

如果dosomething接受一个 jQuery 对象作为参数,那么你可以这样做:

$('#selected').click(function(){
    dosomething($(this))
});
于 2013-04-15T19:36:38.817 回答
1

在事件处理程序中,jQuery 将分配this给选定的元素。请注意,此时它不是 jQuery 对象,因此您需要使用$().

$('#selected').click(function(){
   dosomething($(this));
});
于 2013-04-15T19:36:53.910 回答
0

你实际上并没有那么远。添加事件时,您已经在 $(this) 范围内。所以你所要做的就是:

$('#selected').click(function() {
 // $(this) is the same as $('#selected')
});

假设您想要这样的“外部”功能:

function click_trigger(e) {
  // e for EVENT
  var $this = $(e.target) // The targeted selector ($('#selected'))
  // OR
  var $this = $(e.currentTarget) // The current clicked item (which might have "bubbled" to #selected)
}
$('#selected').click(click_trigger);

您可以查看 jquery 文档以获取有关“事件”参数的更多信息

于 2013-04-15T19:39:12.733 回答
0

取决于您要完成的工作:

这将是坚实的,并会给你这个外部:

$this = $(this);
$('#selected').click(function(){
    dosomething($this);
})

如果您想传递此含义“#selected”元素,这就足够了:

$('#selected').click(function(){
    dosomething($(this));
})

或者您可以这样做以在“#selected”元素的上下文中运行 dosomething:

$('#selected').click(function(){
    dosomething.call(this);
})

最后一个将允许使用this内部dosomething函数,这意味着“#selected”元素。

于 2013-04-15T19:41:54.843 回答