使用类删除/删除最接近的元素

时间:2013-09-16 21:24:55

标签: jquery

我正在尝试删除/删除“.delete”按钮上最近的“.step”按钮。因此,它会删除.dele上面的.step。

 <div class="step"></div>
 <div class="new"></div>
 <div class="delete"></div>

<div class="step"></div>
 <div class="new"></div>
 <div class="delete"></div>

<div class="step"></div>
 <div class="new"></div>
 <div class="delete"></div>

这是我的jQuery:

   $('.delete').click(function(){
       $(this).find('div.step').remove();    
     });

我该怎么做这个步骤?谢谢你的帮助!

4 个答案:

答案 0 :(得分:6)

我建议,鉴于HTML:

$('.delete').click(function(){
    $(this).prevAll('.step').first().remove();    
});

JS Fiddle demo

改编上述内容(以防止第二次点击.delete元素时出现问题):

$('.delete').click(function(){
    $(this).prevUntil('.delete').first().prev('.step').remove();
});

JS Fiddle demo

虽然如果.step是祖先,或者包含在父元素中会更容易:

<div>
    <div class="step"></div>
    <div class="new" id="addNextSlide"></div>
    <div class="delete"></div>
</div>

这将启用以下功能:

$('.delete').click(function(){
    $(this).parent().find('.step').remove();    
});

JS Fiddle demo

参考文献:

答案 1 :(得分:3)

您有多个 ID,这是无效的HTML。也许它只是一个例子,否则解决它。

要删除您可以删除的div,请仔细检查它是否具有如下所示的正确类:

$('.delete').click(function () {
    var $wanted = $(this).prev().prev();
    if ($wanted.hasClass('step')) $wanted.remove();
});

演示here

答案 2 :(得分:2)

选择之前的.new,然后选择上一个.step,然后将其删除:

$('.delete').on('click', function(){
   $(this).prev('.new').prev('.step').remove();    
});

答案 3 :(得分:0)

Use prev

$('.delete-slide').click(function(){
    $(this).prev('div.step').remove();    
});