javascript - 我可以使用嵌套的 jquery.proxy

标签 javascript jquery proxy

我可以使用嵌套的 jquery.proxy 吗?

var obj = {
    init: function(element){
        element.on('click.mynamespace',$.proxy(function (event) {
          $(event.currentTarget).animate({
             scrollLeft: scrollPos
          }, width, $.proxy(this.myFunction,this));
        },this))
    },
    myFunction: function(){
        /*some code*/
    }
}

这就是我的项目所需要的。我使用嵌套的 $.proxy 来使代码工作。因为我在 myFunction 中需要 this 上下文,它是 jquery animate api 的回调函数。 我可以这样使用吗?

最佳答案

它应该可以工作,但是我建议在外部作用域中存储对对象的引用将是一个更优雅的解决方案。注意本例中_obj的定义和使用:

var scrollPos = 10;
var width = 20;
var obj = {
  init: function($element) {
    var _obj = this;
    
    $element.on('click.mynamespace', function(e) {
      $(this).animate({
        scrollLeft: scrollPos
      }, width, _obj.myFunction.call(this));
    });
  },
  myFunction: function() {
    // this function now executes within the context of the
    // element which has been animated in the click handler
    console.log(this.id);
  }
}

var $foo = $('#foo');
obj.init($foo);
$foo.trigger('click.mynamespace');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo"></div>

关于javascript - 我可以使用嵌套的 jquery.proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47416469/

相关文章:

c# - WCF 代理使用

wcf - 在 WCF 服务中使用 WebClient

javascript - 使用 express node.js 的 Route 但 express.Router 变得未定义

javascript - Jquery Pjax - Ajax 成功函数

javascript - 获取点击元素的索引

javascript - 使用 jQuery 获取姐妹元素

jquery - 如果元素 hasClass 改变innerHTML

javascript - 从内容可编辑的 div 中移除焦点

javascript - CSS/AJAX - 在 AJAX 调用上激活样式

java - 如何在不修改应用程序的情况下拦截客户端的 EJB 调用?