像我的应用程序中的模块的脚本创建命名空间/子模块的东西?就像说我只想将某些任务委托给某个div中的元素,比如说#submodule1.
我可以这样做:
$("#submodule1")
.delegate(".selector1", "click", function() {} )
.delegate(".selector2", "click", function() {} )
Run Code Online (Sandbox Code Playgroud)
如果有可能,它会是否相同:
$("#submodule1").delegate(".selector1", "click", function() {} )
$("#submodule1").delegate(".selector2", "click", function() {} )
Run Code Online (Sandbox Code Playgroud)
编辑
根据TJ Crowder的回答我应该能够做到这一点:
$("#soap-test-test-cases")
.delegate(".soap-test-case", "click", function(){
testfunction();
});
.delegate("legend", "click", function() {
alert("this is a test!");
});
Run Code Online (Sandbox Code Playgroud)
但我得到一个语法错误
T.J*_*der 15
编辑:
您的编辑更改了问题,现在您有语法错误:
$("#soap-test-test-cases")
.delegate(".soap-test-case", "click", function(){
testfunction();
});
// v--- here
.delegate("legend", "click", function() {
alert("this is a test!");
});
Run Code Online (Sandbox Code Playgroud)
如果你删除前面的分号,你没问题:
$("#soap-test-test-cases")
.delegate(".soap-test-case", "click", function(){
testfunction();
}) // <== No semi here, we're not done with the statement yet
.delegate("legend", "click", function() {
alert("this is a test!");
}); // <== Now we're done with the statement
Run Code Online (Sandbox Code Playgroud)
这是一个跨越多行的声明,这很好.您正在调用$(),然后调用返回delegate的对象$(),然后调用delegate您第一次调用的对象delegate返回.
在第一次delegate调用后使用分号,您有两个语句,第二个以a开头.(这是语法错误).
JavaScript主要不关心换行符,它关心语句,这些语句以分号结束.它具有自动分号插入的恐怖,但它不会插入使您的代码无效的分号.(它会插入使你的代码行为异常的分号,所以,再次,知道你的语句开始和结束的位置,并确保你提供正确的分号.)
原始答案:
您给出的代码示例都是有效的,它们具有相同的效果:连接两个单独的函数来处理点击,其中一个在元素的一个子集(.selector1)上,另一个在另一个(.selector2)上.你的第一个例子就是标准链接.
我不认为这是你所要求的,但以防万一:如果你想对两类元素使用相同的函数,你也可以这样做:
$("#submodule1").delegate(".selector1, .selector2", "click", function() { });
Run Code Online (Sandbox Code Playgroud)
...或(当然)使用相同的命名函数和两个单独的delegate调用.