【问题标题】:Call jQuery trigger with jQuery object使用 jQuery 对象调用 jQuery 触发器
【发布时间】:2012-07-19 11:01:23
【问题描述】:

我有一个 jQuery 对象,我想将它传递给 jQuery.trigger。绑定函数应该接收这个对象并用它做一些事情。但是,似乎绑定函数接收的是 DOM 节点,而不是传递给触发器的完整 jQuery 对象。

例子:

var doSomething = function(event, object) {
    object.myPluginFunction(); 
}

$("#selector").bind("finished", doSomething);

var myObject = $("#table").myPlugin();
$("#selector").trigger("finished", myObject);

问题是:在doSomething 中我无法访问object.myPluginFunction... 接收到的对象实际上似乎不是一个对象。相反,它是一个 DOM 节点。在我看来,就像 jQuery 剥离了它。

有没有办法在不调用$.myPlugin 或引入回调的情况下获得访问权限?

我使用 jQuery 1.4.1,无法升级。

【问题讨论】:

    标签: jquery events triggers bind jquery-events


    【解决方案1】:

    需要在数组中调用触发器参数

    $("#selector").trigger("finished", [myObject]);​
    

    jsFiddle

    另外,请注意,由于此“完成”是您创建的自定义事件,因此与任何 UI(本机)事件无关,因此使用 triggerHandler 而不是 trigger 调用更正确。

    【讨论】:

      【解决方案2】:

      另一个例子:

      var obj = (function() {
          var that = {};
          var name = "toto";
      
          that.getName = function() {
              return name;    
          };
      
          return that;
      })();
      
      $("#btnTest").bind("customEvent", function(evt, obj) {
          console.log(obj.t1.getName());
      });
      
      $("#btnTest").click(function() {
          $("#btnTest").trigger("customEvent", {t1: obj});
      });
      

      jsFiddle:http://jsfiddle.net/EJLwu/3/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 2015-08-15
        • 1970-01-01
        相关资源
        最近更新 更多