我在一个页面中有一堆微笑,点击时必须选择。我尝试实现一个基于jquery的解决方案,但在这个阶段被卡住了,因为选择了多个微笑:
<div class="smiles_feed">
<input type="text" id="rating" value="" name="rating" class="displaynone" />
<div style="float:left;width:auto;text-align:Center;">
<button type="button" class="awesomesmile" class="unselected" value="Awesome" style="margin-bottom:0px;"></button>
<div class="smiletitle" style="font-size:9pt;color:white;">Yummy!</div>
</div>
<div style="float:left;width:auto;text-align:Center;">
<button type="button" class="goodsmile" class="unselected" value="Good" style="margin-bottom:0px;"></button>
<div class="smiletitle" style="font-size:9pt;color:white;">Good!</div>
</div>
<div style="float:left;width:auto;text-align:Center;">
<button type="button" class="okaysmile" class="unselected" value="Okay" style="margin-bottom:0px;"></button>
<div class="smiletitle" style="font-size:9pt;color:white;">Okay!</div>
</div>
<div style="float:left;width:auto;text-align:Center;">
<button type="button" class="yucksmile" class="unselected" value="Yuck" style="margin-bottom:0px;"></button>
<div class="smiletitle" style="font-size:9pt;color:white;">Yuck!</div>
</div>
</div>
<script type='text/javascript'>
$(function(){
// Smile Click Function
$('div.smiles_feed :button').click(function(){
$(this).removeClass('unselected').addClass('selected');
$(this).siblings().removeClass('selected').addClass('unselected');
$('#rating').val($(this).val());
//alert($('#rating').val());
});
});
</script>
我做错了什么?如何更改javascript函数使其只选择一个笑脸?
click()
函数中的$(this)
指的是被单击的按钮,而不是被单击的div。您需要将selected
类添加到$(this).parent()
中siblings()
返回的元素不是表示其他表情符号的div,而是该表情符号的其他元素(在本例中为div.smiletitle
)
要获得其他微笑符号的列表,您应该查看$(this).parent().siblings()
。
如果你的按钮代表了微笑,那么你应该遍历其他的微笑,如下所示:
$(this).parent().siblings().children('button')
并使他们每个人都被取消选择:
$(this).parent().siblings().children('button').each(function(){
$(this).removeClass('selected')
.addClass('deselected');
});