通常,如果我想在JQuery中创建click事件,请使用以下语法:
$("#test").on("click", function() { console.log($(this)); });
在这里,我可以使用this
关键字轻松引用点击的元素。
然而,在JQuery UI Widgets中,似乎他们想要的格式是:
this._on( $("li", this.list), {
dblclick: function() {
console.log$(this);
}
});
问题是,JQuery UI对窗口小部件使用this
,我无法引用被点击的this
。我需要一种特殊的语法吗?
使用普通JQuery方法的问题在于,由于this
然后引用了所点击的内容,因此我无法在其中使用我的窗口小部件变量。
我是否需要创建一个临时占位符变量才能使其正常工作(如var temp = this.myVar
),还是有另一种解决方法?
答案 0 :(得分:2)
http://docs.jquery.com/Plugins/Authoring
那应该给你所需的信息。但是,您可以将ui-plugin代码视为.each()
方法的单个迭代,而this
关键字是列表中当前搜索的元素,您可以从此$("p.findMe")
获取。因此,实质上使用this
关键字,以便不需要对DOM树进行另一次搜索。
click函数有一些可以传递的参数,例如target元素。看看这个: http://api.jquery.com/click/
现在具体来说,您将需要关注函数重载中提到的事件对象。通过在function(event){}
中使用function()
代替dblclick
,您可以使用它来获取目标元素以及处理事件的所有其他信息,例如其点击位置和父元素。