我在html / smarty下面有5星系统
<ul class="star-rating" id="{$ID}">
<li><a href="#" class="one-star"></a></li>
<li><a href="#" class="two-stars"></a></li>
<li><a href="#" class="three-stars"></a></li>
<li><a href="#" class="four-stars"></a></li>
<li><a href="#" class="five-stars"></a></li>
</ul>
<div style="display:none;" id="ok">Vote submited</div>
<div style="display:none;" id="wrong">Wrong</div>
<div style="display:none;" id="loggedin">Log in to vote</div>
ul blocks拥有自己的ID。我需要传递已被按下的女巫星并获得ul id,这个数据需要传递给php并获得响应,响应需要淡出。我在下面提出了一些基本代码,但需要完成并修复。如果有人愿意帮助我们会感激不尽吗?
$( ".star-rating" ).click(function() {
$.ajax({
type: "POST",
url: "js/ajax.php",
data: "id" + id, "score" + score,
success: function(pass) {
// all ok
if(pass == '1')
$("#ok").show();
// something went wrong
else if(pass == '2')
$("#wrong").show();
// you need to be logged in to vote
else if(pass == '3')
$("#loggedin").show();
}
});
});
答案 0 :(得分:1)
听起来你想绑定到a
而不是ul
:
$('ul.star-rating').on('click', 'a', function() { // jquery 1.7+
var score = this.className,
ul = $(this).closest('ul'),
id = ul[0].id;
$.ajax({
type: "POST",
url: "js/ajax.php",
data: {id: id, score: score}, // fixed formatting here
success: function(pass) {
// all ok
if(pass == '1')
$("#ok").show().delay(5000).fadeOut(); // here is one way to do a fade out
// something went wrong
else if(pass == '2')
$("#wrong").show();
// you need to be logged in to vote
else if(pass == '3')
$("#loggedin").show();
}
});
return false;
});
另请注意,您的成功回调延迟是一种淡入淡出的方法。
答案 1 :(得分:0)
显然,您需要获取ID和分数。
ID来自UL,可以这样得到:
var id = $(this).closest('ul').attr('id')
星级来自全班,您需要获得所有课程(如果还有其他课程),并获得评分。
var liClass = $(this).attr('class').split(' '), score;
$.each(liClass, function(i,v){
if(v.indexOf('-star') !== -1){
score = v;
return false;
}
});