Отправить данные для привязки функций.со структурой "click: function () {...}" - PullRequest
2 голосов
/ 09 ноября 2010

Я могу отправить такие данные (данные разные)?

$("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 ]

1 голос
/ 09 ноября 2010

Я не уверен, почему это важно, но если вы просто не хотите, чтобы он снова запускал селектор, вы можете сделать две вещи: 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) { ... });

Есть ли другая причина, почему вы хотите это сделать?

Редактировать
Чтобы явно ответить на вопрос, нет, невозможно передать данные, не объявив их снаружи с помощью формата объекта jQuery "map". Если вы не запускаете события вручную, что я не думаю, что вы хотите делать.

0 голосов
/ 09 ноября 2010

ну, не то, что я хотел, но мне полезно:

HTML

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

JS

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" } });

пример

...