【问题标题】:How to pass the jQuery object which triggered an event to custom object function?如何将触发事件的 jQuery 对象传递给自定义对象函数?
【发布时间】:2013-02-03 09:28:03
【问题描述】:

请看下面的代码:

jQuery(function($) {

Slider = function() {

    this.deleteSlider = function(e) {
        return false;
    }

}

var Slider = new Slider;

$('.heading-slider .actions .delete').click( Slider.deleteSlider );

});

如您所见,我正在使用 jQuery。在这种情况下,如何将点击的元素,包裹在 jQuery 对象中传递给 deleteSlider 函数?

我能想到的唯一解决方案是使用$(e.target),但一定有更好的方法。

【问题讨论】:

    标签: jquery object parameter-passing


    【解决方案1】:

    Silder.deleteSlider 应该被调用,this 指向触发点击的 DOM 元素,而不管其原始上下文如何,因此除了在函数内调用 $(this) 之外,您无需执行任何操作。

    如果你想用 this 引用用 jquery 包装的元素来专门调用它,那么你可以这样做:

    $('.heading-slider .actions .delete').on('click', function(e) {
        Slider.deleteSlider.apply($(this), [e]);
    });
    

    【讨论】:

      【解决方案2】:

      其实据我所知没有更好的方法,使用$(e.target)有什么问题??

      jQuery(function($) {
          Slider = function() {
              this.deleteSlider = function(e) {
                  var $elem = $(e.target);
                  return false;
              }
          }
      
          var Slider = new Slider;
          $('.heading-slider .actions .delete').on('click', Slider.deleteSlider);
      });
      

      【讨论】:

      • 我认为有一种我不知道的“jQuery-sh”方式 :) 谢谢!
      • 不,您可以将参数传递给 deleteSlider 函数,但这需要在 click 函数中调用另一个函数,并且更糟糕的是 IMO。无论如何,该事件都会自动传递!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多