2009-10-11 56 views
2

使用这个插件:http://www.fyneworks.com/jquery/star-rating/#tab-TestingjQuery的星级插件和取消等级按钮

我有一个拿起从单选按钮ID的简单的回调函数:

<input type="radio" class="auto-submit-star {split:2}" id="myid" value="1" /> 

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

这工作得很好,但如果用户点击取消按钮,然后它不能读取它的ID。

在JS,我认为取消按钮与动态添加:

control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>') 

如果我添加一个id这样的:

control.cancel = $('<div class="rating-cancel"><a id="someid" title="' + control.cancel + '">' + control.cancelValue + '</a></div>') 

我怎么能读取的ID?这将是未定义的。我可以设置一个类并使用$('。myclass')。attr('id'),但是我将在一个页面上有多个评级,所以我需要类似于“this”的东西。或者是否可以取消按钮来选取相应单选按钮的ID?

回答

2

如果id未定义,那么您知道他们单击了取消按钮。无需为它设置一个id

if (typeof $(this).attr('id') == 'undefined') {...} 
+0

我需要拿起id的原因是将它传递给我的数据库。每页还会有不止一个评级。例如,如果我在一个页面上有3个评分,并且用户点击了第二个评分上的取消按钮,那么我需要知道它是在第二组中,我需要该特定ID插入到我的一个列。希望你明白我的意思。 – Roger 2009-10-11 17:08:51

0

好罗杰 - 我发现这是因为我面临着同样的问题。这是我暂时解决它的方法。我希望这个插件在未来得到修复。我的感觉是,你现在不需要解决问题,但它可以帮助其他人。显然,它依赖于DOM元素的结构,因此不是一个非常优雅的解决方案。

//RYAN OBEROI: A big hack, since the cancel callback does not have the appropriate information 
name = $(this).parent().next().attr('name') 

// click callback, as requested here: http://plugins.jquery.com/node/1655 
if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0], name]);// callback event 
0

谢谢瑞恩!我加入了点击事件等级,取消类,它为我工作

jQuery(".rating-cancel").click(function() { 
     var name = jQuery(this).parent().next().attr('name'); 
     if (name != "") { 
      //added the custom code here to handle rating cancel event 
     } 
     });