我将如何通过另一个方法来执行一个方法到原始的$(this)
How would I go about performing a method through another method to the original $(this)?
例如:
function masterMethod(this, action){
// (action); <-- But action requires $(this) to be defined.
}
$(".item").click(function(){
function minorMethod(){
alert($(this));
}
masterMethod($(this), minorMethod)
});
我将如何执行操作并在masterMethod中传递$(this)?
您可以使用call
[MDN]:
function masterMethod(element, action){
action.call(element);
}
$(".item").click(function(){
function minorMethod(){
alert($(this));
}
masterMethod(this, minorMethod)
// or directly here?
// minorMethod.call(this)
});
请注意我所做的两个更改:我没有将$(this)
传递给masterMethod
,而是传递了this
(DOM元素),因为在minorMethod
内部,您将再次将this
传递给jQuery。如果您正在传递$(this)
,那么最终将再次向jQuery传递一个jQuery对象,即$($(this))
,这是不必要的。
我不确定它是否真的会引发错误,但无论如何,您都不应该将参数命名为this
。
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 将一个方法转换为promise:Nodejs
- 如何在所有ng点击事件AngularJS上启动一个方法
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 拆散一个大班的巧妙方法
- 如何创建一个方法来验证数组的范围
- 如何将一个方法延迟到另一个方法首先完成,javascript
- Angular2将组件方法导入到另一个组件中
- 你能把一个匿名方法(函数)动态地变成一个命名方法吗
- 在Javascript中对类的每个实例调用一个方法
- 如何重写一个方法,并且仍然能够在重写的方法中使用基方法
- 将其中一个异步方法重写为使用promise的方法
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- 我应该返回一个类似console.log()的方法调用吗
- AngularJS从对象中获取另一个值的方法
- JavaScript 方法一个有效,另一个无效
- 正确的删除方法一个属性
- QUnit:每个方法一个测试,每个方法有多个断言或多个测试