2011-02-17 49 views
0

我該如何檢索我的選擇中的哪一個是我的「當前」目標? 我想在這個函數中有不同的變量。jQuery當前多選目標

$('#header a, #nav a').click(function (event) { 

// if is $('#header a') do this 
// if is $('#nav a') do that 

}); 
+1

要麼或者把邏輯變成一個功能,點擊分成兩個調用調用同一個功能。 – melaos 2011-02-17 14:57:00

+2

如果您對元素做了兩件完全不同的事情,則應該爲每個元素附加一個單獨的事件處理程序。 – 2011-02-17 14:58:46

回答

4

this將參考實際的DOM元素,使您可以檢查tagNameclassName,或者尋找$(this).parents('#header')

$('#header a, #nav a').click(function (event) { 
    var $this = $(this); 

    if ($this.parents("#header").length > 0) { 
    display("I'm inside #header"); 
    } 
    else if ($this.parents("#nav").length > 0) { 
    display("I'm inside #nav"); 
    } 
    else { 
    // Obviously this won't happen. 
    // None of us has *ever* changed a selector and forgotten to update the code! ;-) 
    display("I'm confused!"); 
    } 

    return false; 

}); 

​​


題外話:我與Felix和melaos同意,如果你真的做的事情不同,重構到不同的處理器(可能是調用常用功能)可能是更好的方法去...

1

這個引用選擇器/ s的匹配集合中的當前元素。 但是,如果您需要以不同方式處理每個元素,那麼爲什麼要將元素的click事件作爲一個組綁定(即使用單個選擇器)。

爲了以更好的方式管理代碼,我會用兩個bind調用,如:

$("#header a").click(function (event) { 
//Do what you need to do for #header a 
}); 

$("#nav a").click(function (event) { 
//Do what you need to do for #nav a 
});