我只是不明白jquery。我知道if else语句是如何工作的,但这里有些不对劲。
$('.box').each( function() {
alert ( ($this).find('input').attr('id') ) //here i see that click is
//made two times for that same element
//and i dont know why
$(this).click( function() {
if ( $(this).find('label').attr('class') == 'active' ) {
$(this).find('label').removeClass('active');
$(this).find('input').prop("checked", false);
}else{
alert('shit');
$label.find('input').prop("checked", true);
$label.find('label').addClass('active')
}
}
}
});
有人可以告诉我为什么当我点击$(this)它首先发出“else”语句然后“if”语句?
我的HTML:
<% Profile.options('gender').each do |key, value| %>
<li class='box'><%= check_box_tag "search[gender][#{value}]", value, false%>
<%= label_tag "search[gender][#{value}]", key %></li>
<% end %>
所以当我点击标签时我想要“活跃”课程。当我第二次点击该标签时,我想从中删除“活动”类。
答案:
我必须将&lt;%= label_tag“搜索[性别] [#{value}]更改为”搜索[性别] [#{value}] _#{value}“ - 因为当标签具有与输入相同的ID时,它会进行两次点击事件。
答案 0 :(得分:0)
.each()
允许您循环遍历元素集合。 ID不是集合,它(应该是!)是单个元素。一个类可以是元素的集合。
该行:
alert($this).find('input').attr('id')
应该是:
alert( $(this).find('input').attr('id') );
缺少的括号会抛弃其他所有内容。首先解决这个问题。
如果您向我们展示您的HTML,并告诉我们您正在尝试做些什么,我们可以进一步提供帮助。