0

通常,如果我想在 JQuery 中创建单击事件,我使用以下语法:

$("#test").on("click", function() { console.log($(this)); });

this在这里,我可以使用关键字轻松引用单击的元素。

但是在 JQuery UI Widgets 中,他们想要的格式似乎是:

this._on( $("li", this.list), {
      dblclick: function() { 
        console.log$(this);
      }
});

问题是,JQuery UIthis用于小部件,我无法引用this被点击的那个。我需要特殊的语法吗?

使用普通 JQuery 方法的问题是我不能在其中使用我的小部件变量,因为thisthen 引用了点击的内容。

我是否需要创建一个临时占位符变量才能使这项工作(如var temp = this.myVar),还是有其他解决方法?

4

1 回答 1

2

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

http://docs.jquery.com/Plugins/Authoring

那应该为您提供所需的信息。但是,您可以将 ui-plugin 代码视为方法的单个迭代,.each()并且this关键字是列表中当前搜索的元素,您可以从 say this 中获得$("p.findMe")。所以本质上this使用了关键字,因此不需要再次搜索 DOM 树。

click 函数有一些您可以传递的参数,例如目标元素。看看这个: http ://api.jquery.com/click/

现在,您需要特别关注函数重载中提到的事件对象。通过使用function(event){}而不是function()在您的中,dblclick您可以使用它来获取目标元素和处理事件的所有其他信息,例如其单击位置和父元素。

于 2013-04-30T23:27:28.490 回答