如何在回调函数中放置一个click函数?

时间:2009-10-12 17:35:54

标签: jquery function callback click

我正在使用此插件:http://www.fyneworks.com/jquery/star-rating/

是否可以在这样的回调函数中放置一个click函数?

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

添加点击功能后,回调功能将停止工作。我需要这样做,因为如果用户点击任何星星,我可以获取星号的ID,但如果用户点击取消按钮,我就无法以某种方式获取取消的ID。

假设你可以在回调中使用点击功能,它是否仍会触发它?因为在你点击之后它会触发回调,它是否仍会触发我的点击功能?

如果我保持单击功能,单独的东西仍然可以工作,但是我必须在两个函数中重复一堆代码。

3 个答案:

答案 0 :(得分:2)

尝试使用实时处理程序

$(".myclass").live("click", function(){
  alert($(this).attr('id'));
});

答案 1 :(得分:2)

为了防止在单击时发生多个操作,您需要在添加新事件之前销毁先前的事件(否则它们只会叠加在一起)。为了摧毁(即杀死)一个事件,你需要:

$('.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 :(得分:0)

您是否考虑过使用jQuery的.live(type,fn)事件而不是绑定回调上的点击?

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