我正在尝试使用这个jQuery来附加一些HTML然后解除它
if( !(jQuery(check).hasClass('selected'))){
jQuery(this).append('<span class="selected"> </span>');
}
我如何才能做到这一点并进行实时更新?我只是想在用户“点击”或“关闭”时添加此元素?
即。如果检查没有“已选择”类 - 追加 - 否则删除?
答案 0 :(得分:5)
由于您的问题有点模糊且缺少标记,因此我使用了演示的基本复选框示例。我在jsFiddle here
中添加了一个现场演示的链接HTML:
<input type="checkbox" id="test" /> Check me
<div id="items"></div>
JavaScript的:
$("#test").bind('click', function(){
var $t = $(this);
if($t.is(':checked')){
// append item
$('#items').append('<span class="selected">I was recently appended.</span>');
}else{
// empty div and remove it from DOM (empty helps with memory leak issues with remove() )
$('span', '#items').empty().remove();
}
});
答案 1 :(得分:1)
我认为更好的方法可能是将每个追加的结果存储到数组或变量中,并在删除元素时循环执行该操作。对于单个元素,
// Appending
var ele = $('<span>', {
html: 'nbsp;',
class: 'selected'
}).appendTo(container);
// Removing
ele.remove();
如果您是在事件处理程序中执行此操作,则应在外部作用域中定义变量ele
,以便以后可以访问它。对于多个项目:
// Appending
var ele = [];
ele.push($('<span>', {
html: 'nbsp;',
class: 'selected'
}).appendTo(container));
// Removing
for(var i = 0; i < ele.length; i++){
ele[i].remove();
}
同样,数组ele
应该在任何事件处理程序的范围之外定义。否则,这个问题的其他答案也会起作用。
答案 2 :(得分:0)
jQuery('#check').click(function() {
var check = jQuery(this);
if ( !check.hasClass('selected') ) {
jQuery('#mydiv').append('<span class="selected"> </span>');
check.addClass('selected');
} else {
jQuery('#mydiv span.selected').remove();
check.removeClass('selected');
}
});
答案 3 :(得分:0)
我认为你不需要在那里添加span标签。 那么,代码可以像这样短。
$("#check").click(function(){
$(this).hasClass('selected') ? $(this).removeClass('selected') : $(this).addClass('selected');
});