2010-01-08 160 views
1

我遇到了利用jQuery的代碼,類似於以下內容。jQuery選擇器問題

NAMESPACE = { 
    propertyA : $("#selector-a"), 
    propertyB : $("#selector-b") 
} 

$(NAMESPACE.propertyA).click(function(){ 
    // ... 
}); 

這似乎工作,即使附加點擊處理程序的語法應該是。

NAMESPACE.propertyA.click(function(){ 
    // ... 
}); 

jQuery是否具有內置的能力來解決以下問題,儘管語法不正確?

$($("#my-selector")).click ... etc. 

回答

1

是的,它會在必要時處理。如果它在你的控制範圍內,你真的不應該使用這種語法。我對以下進行了測試,結果如下:

$($("li")).click(function(e){ 
    alert(e.target); 
}); 

//-- 

$("li").click(function(e){ 
    alert(e.target); 
}); 
+0

使用這種語法不是我的決定,我明白這不是我們想要的。 – jerome 2010-01-08 15:06:00

+0

@jerome:沒有血,沒有犯規:)我知道必須與其他人的挑剔的代碼工作。 – Sampson 2010-01-08 15:08:14

3

是的。 jQuery的允許作爲參數傳遞給$

  • CSS選擇
  • DOM元素
  • DOM元素
  • 甲jQuery對象
  • 的功能的陣列(其將被稱爲作爲其一部分$.ready()

就jQuery而言,所有這些都是有效的語法,雖然性能可能在某些情況下受到損害。

由於您的NAMESPACE.properties是jQuery元素,這將工作。