javascript - 如何在 jQuery 中使用 $(this) 改进此代码?

标签 javascript jquery

我有以下 jQuery 函数(简化):

function doSomething(el, str) {
 el.find('.class').text(str));
}

不要担心 .text() 部分,实际上我正在做一些比这更复杂的事情......但是因为这与我的问题无关,所以我只是此处使用 .text() 作为简单示例。

问题是,每次我调用 doSomething() 函数时,代码如下所示:

doSomething($(this), foo); // the second argument is irrelevant
doSomething($(this), bar); // the second argument is irrelevant

如您所见,我始终将 $(this) 作为第一个参数传递。不知何故,我觉得这不是正确的方法...可以改进这个函数,使其自动从调用它的上下文继承 $(this) 吗?也许像下面这样:

$(this).doSomething(foo); // the foo argument is irrelevant
$(this).doSomething(bar); // the bar argument is irrelevant

最佳答案

您可以创建一个简单的插件来执行此操作。

很多关于的文章。请参阅this有关更多信息,请访问 jQuery 网站

$(function(){

   jQuery.fn.changeAnchorText = function(str) {
     return this.each( function(){
        $(this).find('a.someClass').text(str);
     });
   };

});

然后调用它

$('div').changeAnchorText("Any descendant anchor tags inside this div with a class of someClass will have the text changed to this message");

关于javascript - 如何在 jQuery 中使用 $(this) 改进此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244075/

相关文章:

javascript - 如何通过鼠标单击删除事件类

javascript - 单击动态添加的元素

jquery - div的位置问题

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL

javascript - 为什么以及何时使用隐藏输入类型?

javascript - 使用 jsfiddle 和 jQuery 模拟 ajax 响应

jquery - 内联行编辑 - 添加一个选择输入选项修复输入文本框的重新缩放

javascript - jQuery 仅在本地 Rails 项目上的浏览器刷新后才起作用

javascript - 订阅事件没有每次都被调用

javascript - Chrome 通过什么来加速页面渲染?