我正在尝试将 jquery.rating 合并到一个表单中,但是当我按下“擦除”按钮时出现错误,我不确定这是一个错误还是我做错了什么。我正在使用最新版本。
此代码重现了错误(确保下载jquery.rating的 .zip 文件并将其展开到名为“starrate”的文件夹中):
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body>
<script src='starrate/jquery.js' type="text/javascript" language="javascript"></script>
<script src='starrate/jquery.MetaData.js' type="text/javascript" language="javascript"></script>
<script src='starrate/jquery.rating.js' type="text/javascript" language="javascript"></script>
<link href='starrate/jquery.rating.css' type="text/css" rel="stylesheet" />
<form action="#" method="post" class="stdform" id="ratingform">
<input type="radio" class="starrate" name="the_rating" value="1" id="rate1" title="choice 1" />
<input type="radio" class="starrate" name="the_rating" value="2" id="rate2" title="choice 2" />
<input type="radio" class="starrate" name="the_rating" value="3" id="rate3" title="choice 3" checked="checked" />
<input type="radio" class="starrate" name="the_rating" value="4" id="rate4" title="choice 4" />
<input type="radio" class="starrate" name="the_rating" value="5" id="rate5" title="choice 5" />
<span id="choice" style="margin:0 0 0 20px;">choice 0</span>
</form>
<script type="text/javascript">
$(function () {
$('#ratingform input:radio[name="the_rating"]').rating({
focus: function(value, link){
var tip = $('#choice');
tip[0].data = tip[0].data || tip.html();
tip.html(link.title || 'value: '+value);
},
blur: function(value, link){
if ( !this.checked ) {
var tip = $('#choice');
$('#choice').html(tip[0].data || '');
}
},
callback: function(value, link){
}
});
});
</script>
</body>
</html>
一切正常,除非我按下星星左侧的“删除”按钮。在 Crome 我得到Cannot set property 'checked' of undefined
,在 IE9 中我得到一个荷兰语错误消息,意思大致相同(SCRIPT5007:Kan de waarde van de eigenschap 检查了 niet instellen:het object is null of niet gedefinieerd)。
它们都指向 jquery.rating.js 中的同一行代码,即“$(input)[0].checked=true;”。这是一段代码:
[...]
// Update rating control state
this.data('rating', control);
// Update display
this.rating('draw');
// find data for event
var input = $( control.current ? control.current.data('rating.input') : null );
// change selection - required since 1.9, see http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=123
ERROR: $(input)[0].checked=true;
有人知道这里发生了什么吗?