Как подписать метод на запуск onchange и на пользовательское событие? - PullRequest
1 голос
/ 06 октября 2010

У меня есть метод настройки для запуска onChange со следующим кодом:

var product = $('#selProduct:visible');
var note=$('#bbdata');

product.selectProduct({
    target: note,
    url: 'product.php',
    data: { ajax: true }
}).trigger('change'); // TO DO: to fire also on visibility change

Тогда у меня есть метод, в котором я делаю div видимым.

function show_product() {
    hide_group2();
    $("#product_zone2").show('fast', function(){
    $("selProduct").trigger('isVisibleProduct');// custom trigger event
    });
}

Я хочу изменить определение метода, чтобы оно срабатывало также при вызове пользовательского события. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

С этим кодом

product.selectProduct({
    target: note,
    url: 'product.php',
    data: { ajax: true }
}).trigger('change');

не являются обязательными selectProduct() для запуска на change событии. Вы просто выполняете selectProduct() и затем запускаете change на product. Возможно selectProduct() связывает что-то с событием change. Но, не зная, что он делает, трудно сказать.

Если вы хотите выполнить selectProduct() для события change и вашего пользовательского события, вы должны привязать обработчик события к обоим событиям, например так:

product.bind('change isVisibleProduct', function() {
    $(this).productSelect({/* ...parameters here ... */});
});

Пожалуйста, уточните свой вопрос, если вы не это имеете в виду.

0 голосов
/ 06 октября 2010

Просто используйте jQuery bind , чтобы связать желаемую функцию с любым типом события (пользовательское событие).

myObject.bind('myEventName', function(){/*..*/});

или

myObject.bind('myEventName', myFunctionName);

, затем с помощью

myObject.trigger('myEventName');

Если бы вы могли поставить

product.bind('isVisibleProduct', function(){
  this.selectProduct({
      target: note,
      url: 'product.php',
      data: { ajax: true }
  }).trigger('change'); // TO DO: to fire also on visibility change
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...