2010-01-08 94 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元素,这将工作。