2013-04-15 49 views
1

我怎樣才能通過$(本)對象,看起來像這樣

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

如果DoSomething的是功能的功能。我試圖做這樣的事情......

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

但好像我做了錯誤的方式...

+2

在這種情況下'$(this)'是指什麼? (並且不,你不能通過這種方式。) –

+0

在點擊事件處理程序中,'this'是被點擊的DOM元素。 –

+0

@LeeMeador對,但他不在點擊事件處理程序中。我的猜測是他在另一個事件中綁定了這個點擊事件處理程序,這可能是一個不好的主意。 –

回答

5

如果dosomething接受作爲參數,一個jQuery對象,那麼你可以這樣做:

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

是的,我想'dosomething'接受一個jquery對象參數,在這種情況下'$('#selected')'。關於代碼,是我可以傳遞'$(this)'的唯一方法嗎?將$(this)傳遞給'$('#selected')。click(dosomething)'格式是不可能的?感謝你的回答! –

1

在事件處理函數中,jQuery將把this賦值給所選元素。請注意,它不是一個jQuery對象,所以你需要用$()來包裝它。

$('#selected').click(function(){ 
    dosomething($(this)); 
}); 
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的文檔的詳細信息,在「事件」參數

0

取決於你正在努力acomplish什麼:

這將是堅實的,會給你這外面的:

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

這是suffcient,如果你想通過這個意思「#selected」元素:

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

或者你也可以做到這一點在「#selected」元素的上下文中運行的DoSomething:

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

最後將允許在dosomething函數內使用this這將意味着「#selected」元素。

+0

你可能想提一下,他可以執行'var currentThis = $(this);'然後使用保存的'this'值。 –