【问题标题】:How to use a function inside a custom jQuery function [duplicate]如何在自定义 jQuery 函数中使用函数 [重复]
【发布时间】:2014-08-16 00:53:15
【问题描述】:

找不到具体的答案。

如果我创建一个 jQuery 函数,将其命名为“doMobile”,如果是这样,我希望它使用其中的函数,我该怎么办?

这就是我想要做的:

$.fn.doMobile = function(somefunctioninside) {
  if ( $('.mobile').is(':visible') )
     somefunctioninside();
};

$('.menu').doMobile(function() {
  $(this).css('background-color', 'red');
});

当我喜欢这样时,$(this) - $('.menu) 不会变成红色。

【问题讨论】:

  • @Cerbrus,您标记为重复的问题不是好问题。链接的问题不使用 jQuery,这在此处至关重要,因为 OP 想要使用 this 作为 HTML 元素。我确定某处有重复,但不是这个(或者有更好的)。
  • 问题是关于如何调用somefunctioninside。链接的问题准确地解释了这一点。
  • @Cerbrus 我同意了,但答案并不能解决 OP 问题。他读完后会问“如何使this成为HTML元素?”
  • 它确实回答了 OP 在此处提出的问题。
  • 我不认为这个问题会被重新打开,所以这里是你的答案。在你的情况下,你想使用这个:this.each(somefunctioninside),但你也可以使用somefunctioninside.call(this);。第二个不同,this 不是 HTML 元素,而是一个 jQuery 对象,所以不需要将它包装在 $() 中。

标签: javascript jquery


【解决方案1】:

试试这个

$.fn.doMobile = function (someFunction) {
    someFunction.call(this);
};

$('.menu').doMobile(test);

function test() {
   this.css('background-color', 'green');
    alert("came");
}

通过this 参考。 @Karl-AndréGagnon 是这样说的

DEMO

【讨论】:

  • 我需要 $(this).css('background-color', 'red') 在 test() 中。我将多次使用此功能来检查文档是否在移动设备上被观看,如果是则效果元素。
  • @matt4692 通过传递参考来检查更新的帖子以使用 conman
  • $('.menu').doMobile(test,test1,test2);你可以传递更多的功能
  • 这是最好的方法吗?我的意思是,当我使用 .click(function() ... 时,我不需要像使用“elem”那样指定元素。有没有办法解决它?
  • @matt4692 无法发布答案,所以我已经就您的问题发表了评论。
猜你喜欢
  • 2014-02-15
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2015-03-28
  • 2017-04-26
相关资源
最近更新 更多