在JQuery UI Widgets中理解“this”

时间:2013-04-30 23:21:48

标签: jquery jquery-ui this

通常,如果我想在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),还是有另一种解决方法?

1 个答案:

答案 0 :(得分:2)

ui插件中的this关键字是ui插件当前正在操作的元素。我想看看如何在这里制作一个插件:

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,您可以使用它来获取目标元素以及处理事件的所有其他信息,例如其点击位置和父元素。