如何在回调函数中添加点击函数?
我使用这个插件: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'));
}
});
一旦添加点击功能,回调函数将停止工作。我需要这样做,因为如果用户点击任何明星,我可以拿起明星的ID,但如果用户点击取消按钮,我不能以某种方式拿起取消的ID。
假设你可以在回调中使用点击函数,它会不会触发它?因为在你点击它之后,它会触发回调,它是否会触发我的点击功能?
如果我保持点击功能,单独的东西仍然可以工作,但是我不得不在两个函数中重复一堆代码。
要防止点击时发生的多个动作,你需要添加一个新的(否则他们只会堆叠在彼此的顶部)之前消灭前面的事件。为了破坏(即杀死)的事件,您需要:
$('.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()
祝您的项目顺利。
谢谢,这非常有帮助。我将click放置在回调函数中的原因是在获取id之后,我将基本上在每个函数内重复相同的代码,所以我试图减少重复的代码。 – Roger 2009-10-12 18:57:25
嗯,实际上有点奇怪的是,放在实时点击功能之外的代码是在实时点击功能的代码之前处理的。这是为什么? – Roger 2009-10-12 19:31:12
@Roger:我认为你对'live()'方法的作用感到困惑。基本上,我给出的第二个代码示例的前三行是(1)找到具有类“myclass”的所有元素,并使其每当单击其中一个元素时,都会弹出一个警报框,其中包含点击元素。每当具有类“myclass”的另一个元素被添加到DOM时,它就重复相同的过程。所以,实质上,作为一个用户,直到你点击一个匹配的元素,你才会知道已经处理了'live()'方法。这有帮助吗? – KyleFarris 2009-10-12 20:45:25
尝试使用实时处理
$(".myclass").live("click", function(){
alert($(this).attr('id'));
});
的解决方案。但是,有时我会在出现问题后出于某种原因收到多个提醒,即使只是一次点击而已。任何想法为什么会发生? – Roger 2009-10-12 18:10:04
简短的回答是,这是可能的。以下两种解决方案利用“实时”事件处理函数是更适合jQuery 1.3.x + – 2009-10-12 17:49:19