试图使用“this”;而不必使用“that”将函数作为参数传递给jquery委托事件处理程序
Attempting to use "this" without having to use "that" while passing functions as parameters to jquery delegate event handlers
假设我有一些javascript,我已经成功地将两个事件处理程序连接到DOM无序列表中的所有DOM "li"元素:
function userClickFunction() {
console.log("USER CLICK");
clickFunction(this);//had to pass "this" as parameter
}
function autoClickFunction() {
console.log("AUTO CLICK");
clickFunction(this);//had to pass "this" as parameter
}
function clickFunction(that) {
var clickedItem = $(that).attr('id');//using "that" I was able to get the attrs from the "li" element
console.log("CLICKED!");
}
$("#my_list").delegate("li", "click", userClickFunction);
$("#my_list").delegate("li", "autoClick", autoClickFunction);
然后我在JS的其他地方触发这些事件处理程序。
$("#some_li").trigger('click');//just kidding, the user does this :P
$("#some_li").trigger('autoClick');//fired by comparing some elaborate timers and interesting state variables.
我只是想知道是否有一个更优雅的解决方案,不必使用"那"和什么"这个"在函数clickFunction()实际上指的是?是否有其他方法可以引用调用函数的上下文而不必将其作为参数传递?谢谢你!
在调用函数时可以使用.call()传递自定义上下文,然后可以在回调函数中使用this
function userClickFunction() {
console.log("USER CLICK");
clickFunction.call(this); //had to pass "this" as parameter
}
function autoClickFunction() {
console.log("AUTO CLICK");
clickFunction.call(this); //had to pass "this" as parameter
}
function clickFunction() {
var clickedItem = this.id; //now this refers to the `li` element, also to get the `id` just refer to `this.id` no need to call `attr()`
console.log("CLICKED!");
相关文章:
- 将字符串作为参数传递给函数onclick event jquery
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 将参数传递给动画回调jQuery
- 如何执行作为参数传递的JQuery匿名函数
- 使用Javascript或Jquery将参数传递到url
- 如何将参数传递到jQuery小部件
- 在Javascript或Jquery中,如何将外部json文件作为参数传递给函数
- JQuery:将参数传递给插件以限制代码执行
- 如何在 JQuery 函数中将事件作为参数传递
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- Jasmine jQuery 测试,用于检查是否已将正确的参数传递给方法
- 如何根据通过函数传递的参数更改 Jquery 选择器
- 如何将参数传递给在 JQuery dialog() Open 事件上调用的操作
- 带有传递参数的 jquery UI 对话框动态函数
- 编写JavaScript函数 - 我应该将jQuery对象作为参数传递吗?
- jQuery .on() 语法并将多个参数传递给函数
- 如何将函数中的 JQuery 对象作为该对象的方法调用的参数传递
- 将函数作为参数传递,然后在jquery函数中执行它
- 将参数传递到JQuery.slideUp()回调中
- Jquery将参数传递给函数时工作不正常