jQuery:将$(this)传递给一个函数

时间:2013-04-15 19:35:36

标签: jquery

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

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

dosomething是什么功能。我尝试过做......

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

但似乎我做错了......

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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文档以获取有关“event”参数

的更多信息

答案 3 :(得分: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”元素。