我該如何檢索我的選擇中的哪一個是我的「當前」目標? 我想在這個函數中有不同的變量。jQuery當前多選目標
$('#header a, #nav a').click(function (event) {
// if is $('#header a') do this
// if is $('#nav a') do that
});
我該如何檢索我的選擇中的哪一個是我的「當前」目標? 我想在這個函數中有不同的變量。jQuery當前多選目標
$('#header a, #nav a').click(function (event) {
// if is $('#header a') do this
// if is $('#nav a') do that
});
this
將參考實際的DOM元素,使您可以檢查tagName
或className
,或者尋找$(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同意,如果你真的做的事情不同,重構到不同的處理器(可能是調用常用功能)可能是更好的方法去...
這個引用選擇器/ 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
});
要麼或者把邏輯變成一個功能,點擊分成兩個調用調用同一個功能。 – melaos 2011-02-17 14:57:00
如果您對元素做了兩件完全不同的事情,則應該爲每個元素附加一個單獨的事件處理程序。 – 2011-02-17 14:58:46