代码之家  ›  专栏  ›  技术社区  ›  andres descalzo

向绑定函数发送数据。结构为“click:function(){…}”

  •  2
  • andres descalzo  · 技术社区  · 14 年前

    我可以发送这样的数据(数据不同)?

    $("div.test").bind("click", {foo: "bar1"}, function(event) { ... })
    $("div.test").bind("mouseenter", {foo: "bar2"}, function(event) { ... })
    $("div.test").bind("mouseleave", {foo: "bar3"}, function(event) { ... })
    

    但在这种结构下:

    $("div.test").bind({
      click: function(){ ... },
      mouseenter: function(){ ... },
      mouseleave: function(){ ... }
    });
    

    不是这个:

    var data = "test";
    $("div.test").bind({
      click: function(){ 
       // use data
      },
      mouseenter:{ 
       // use data
      },
      mouseleave: { 
       // use data
      }
    });
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Richard Marskell - Drackir Sunil Tandon    14 年前

    我不知道它为什么重要,但是如果你不想它再次运行选择器,你可以做两件事:
    1) 绑定前保存对象:

    var $mytest = $("div.test");
    $mytest.bind("click", {foo: "bar1"}, function(event) { ... });
    $mytest.bind("mouseenter", {foo: "bar2"}, function(event) { ... });
    $mytest.bind("mouseleave", {foo: "bar3"}, function(event) { ... });

    2) 你可以把他们锁起来:

    $("div.test").bind("click", {foo: "bar1"}, function(event) { ... })
        .bind("mouseenter", {foo: "bar2"}, function(event) { ... })
        .bind("mouseleave", {foo: "bar3"}, function(event) { ... });

    编辑

        2
  •  0
  •   andres descalzo    14 年前

    HTML格式

    <button id="test">test</button>
    <div id="data-event"></div>
    

    var fn = function(event) {
    
        $("#data-event").append("<div>" + event.data[event.type].xx + "</div>");
    
    };
    
    $("#test").bind(
        {
          click:  fn,
          mouseover: fn
        },
        {click: { xx: "click-text" }, mouseover: { xx: "mouseover-text" } });
    

    example