Как поместить функцию щелчка в функцию обратного вызова? - PullRequest
1 голос
/ 12 октября 2009

Я использую этот плагин: http://www.fyneworks.com/jquery/star-rating/

Возможно ли поместить функцию щелчка внутри функции обратного вызова, как эта?

$('.auto-submit-star').rating({ 
  callback: function(value, link){ 
    $('.myclass').click(function(){
      alert($(this).attr('id'));
    });
    alert($(this).attr('id'));
  } 
});

Функция обратного вызова перестанет работать, как только я добавлю функцию щелчка. Мне нужно сделать это, потому что если пользователь нажимает на любую звездочку, я могу подобрать идентификатор звезды, но если пользователь нажимает кнопку отмены, я не могу каким-либо образом подобрать идентификатор отмены.

Предполагая, что вы можете использовать функцию щелчка внутри обратного вызова, она все равно будет вызывать ее? Потому что после того, как вы щелкнете по нему, он вызовет обратный вызов, будет ли он вызывать мою функцию щелчка внутри?

Если я сохраню функцию щелчка, отдельные вещи все равно будут работать, но тогда мне придется повторить кучу кода внутри обеих функций.

Ответы [ 3 ]

2 голосов
/ 12 октября 2009

Чтобы избежать нескольких действий при нажатии, вам нужно уничтожить предыдущее событие перед добавлением нового (в противном случае они будут просто накладываться друг на друга). Чтобы уничтожить (то есть убить) событие, вам необходимо:

$('.auto-submit-star').rating({ 
  callback: function(value, link){ 
    $(".myclass").die("click").live("click", function(){
      alert($(this).attr('id'));
    });
  } 
});

В качестве альтернативы (и предпочтительно), не прикрепляйте событие click из обратного вызова ... делайте это отдельно.

$(".myclass").live("click", function(){
    alert($(this).attr('id'));
});
$('.auto-submit-star').rating()

Удачи в вашем проекте.

2 голосов
/ 12 октября 2009

Попробуйте использовать живой обработчик

$(".myclass").live("click", function(){
  alert($(this).attr('id'));
});
0 голосов
/ 12 октября 2009

Вместо привязки щелчка по обратному вызову, вы рассматривали возможность использования .live (type, fn) события jQuery?

http://docs.jquery.com/Events/live#typefn

...