简单的html:
<div class="stuff-choice">
<div class="item a">
<label class="signup-checkbox">
<input type="checkbox" value="a" name="stuff[a][]" id="stuff_choice_" class="things">
<strong>A</strong>
</label>
</div>
</div>
基本上我检测到有人点击了css类.things
的复选框,然后我用css类<div>
更新了父.selected
。
JS :(带有$(document).ready(function(){
...
$('.things').click(function() {
item = $(this).closest("div");
if ($(this).attr('checked') != null)
$(item).addClass('selected');
else
$(item).removeClass('selected');
});
这就像下面的魅力: - Safari(mac&amp; win) - Firefox(mac&amp; win)
但不是在IE下!?!?
我不知道为什么......
谢谢,
亚历
答案 0 :(得分:4)
所以试试这个:
var item = $(this).closest("div");
答案 1 :(得分:2)
试试这个,closest
已经提供了一个jQuery对象,你没有把它包装在$()
中,并且is()
方法也可以用于检查是否被检查。
$('.things').click(function() {
$item = $(this).closest("div");
if ($(this).is(':checked'))
$item.addClass('selected');
else
$item.removeClass('selected');
});
答案 2 :(得分:0)
我认为你的问题是你正在调用的对象.addClass
。
item = $(this).closest("div");
在这一行中,item
被设置为jQuery对象。
因此,在您的下一个声明中,您不需要$(item)
语法,只需使用item
。
$('.things').click(function() {
item = $(this).closest("div");
if ($(this).attr('checked') != null)
item.addClass('selected');
else
item.removeClass('selected');
});
答案 3 :(得分:0)
我使用.prop('禁用','禁用')而不是addClass('hide') - 它对我有效。