【问题标题】:jQuery get current click event for element and append to itjQuery获取元素的当前点击事件并附加到它
【发布时间】:2009-08-14 20:14:57
【问题描述】:

当网格完成渲染时,我正在使用 jqGrid 并将我自己的 onclick 事件添加到每个数据单元格。

jqGrid 具有在单击时突出显示行的默认行为。当我在网格呈现后添加自己的 onclick 事件时,我的事件会按预期覆盖 jqGrid 事件。我想保留 jqGrid onclick 事件并将我的事件添加到它。

如何获取与某个类匹配的所有元素的当前 onclick 事件,并为该事件附加更多操作?这是我当前的新 onclick 事件。

谢谢!

$(".searchOrders").click(function() {
    $('#tabs').tabs('url', 2, '/view/dspOrders.cfm?id_orders='+$(this).attr('title'));
    $('#tabs').tabs('select', 2);
});

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    jQuery 事件绑定机制不是一种覆盖机制。换句话说:

     $("#button").click(function() { alert("hello"); });
     $("#button").click(function() { alert("goodbye"); });
    

    在#button 上触发了两个事件,第二个不会覆盖第一个。

    这里发生了其他事情。

    【讨论】:

    • 天哪,呵呵!其他 onclick 事件在表格单元格上,我的新事件在单元格内的锚点上。现在才注意到。
    【解决方案2】:

    使用 jqGrid onCellSelect 事件。 jqGrid Docs

    【讨论】:

      【解决方案3】:

      您可以修改我用来插入加载事件的一些代码:

      // stack the original loads
      var aryLoadQueue = new Array();
      $.each($.data($main.get(0), "events").load, function() {
          aryLoadQueue.push(this);
      });
      
      ...
      
      // put the original loads back in place to take place after our one-time load
      $(aryLoadQueue).each(function() {
          $main.load(this);
      });
      

      如有问题,请随时发表评论...

      【讨论】:

        猜你喜欢
        • 2016-11-18
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 2017-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        相关资源
        最近更新 更多