我正在尝试让复选框在检查时附加div,并在取消选中时删除相同的div。我相信问题是什么时候调用.remove()..我只是不知道问题是什么。 非常感谢你的帮助!
$(document).ready(function(){
$('.checked_locations').click(function(){
if ($(this).is(':checked'))
{
var value = $(this).val();
$('#locations_filter').append("<div id='hidden_"+value+"'><input type='hidden' name='loc_filter[]' value='"+value+"' /></div>");
}
else
{
//alert('not checked');
$('#locations_filter #hidden_'+value).remove();
}
});
});
答案 0 :(得分:4)
value
。将它的声明移到if语句之外。
$(document).ready(function() {
$('.checked_locations').click(function() {
var value = $(this).val();
if ($(this).is(':checked')) {
$('#locations_filter').append("<div id='hidden_" + value + "'><input type='hidden' name='loc_filter[]' value='" + value + "' /></div>");
}
else {
//alert('not checked');
$('#hidden_' + value).remove();
}
});
});
答案 1 :(得分:4)
您尝试将值变量从不同的块引用到您首次定义它的位置:它超出范围。您需要将var value = $(this).val();
移到if语句之外。
答案 2 :(得分:0)
只需使用此代码:
$('#hidden_'+value).remove();
元素ID必须是唯一的,因此您将引用一个唯一的项目。
答案 3 :(得分:0)
else
{
var value = $(this).val();
$('#locations_filter #hidden_'+value).remove();
}
答案 4 :(得分:0)
一种更优雅的方式来做你想做的事情:
$(document).ready(function(){
var element;
$('.checked_locations').click(function(){
if ($(this).is(':checked'))
{
var value = $(this).val();
element= $('#locations_filter').append("<div id='hidden_"+value+"'><input type='hidden' name='loc_filter[]' value='"+value+"' /></div>");
}
else
{
//alert('not checked');
element.remove();
}
});
});
这是一个closure,它是动态语言中非常强大的技术。如果你打算在javascript中进行认真的开发,那么学习它会很好。