2013-11-01 212 views
1

如何在點擊時刪除所有元素,包括其父元素。這些選項卡是動態生成的。我到目前爲止所嘗試的是:刪除父元素jQuery

我使用bootbox進行確認。

function remove() { 
     bootbox.confirm("Are you sure?", function(result) { 
      if(result != false) { 
       var anchor = $(this).siblings('a'); 
       $(anchor.attr('href')).remove(); 
       $(this).parent().remove(); 
       $(".nav-tabs li").children('a').first().click(); 
      } 
    }); 
} 

通過該產生的,我會刪除該選項卡:

$(document).on('submit','#pop-form', function(e) { 
    // make an ajax request 
    $.post('../admin/FLT_add_tab.do', 
      $('#pop-form').serialize(), 
      function(data) { 
       // if data from the database is empty string 
       if($.trim(data).length != 0) { 
        // hide popover 
        $('#popover').popover('hide'); 
        //append new tab and new tab content 
        var id = $(".nav-tabs").children().length - 1; 
        $('#popover').closest('li').before('<li><a href="#tab_'+ id +'" data-toggle="tab" class="g-tabs">' + data + '&nbsp;</a></li>');   
        $('.tab-content').append('<div class="tab-pane" id="tab_' + id + '"> <c:import url="flt-pis.html"></c:import> </div>'); 
       } else { 
        // error handling later here 
       } 
      } 
    ); 
    e.preventDefault(); 
}); 

UPDATE:

remove()通過附加<i>稱爲當用戶將鼠標懸停的標籤

$(document).ready(function() { 
    $(document).on('mouseenter', 'a.g-tabs', function() { 
     $(this).append($('<i class="icon-clear-remove" onClick="tabRemove();"></i>')); 
    }); 
    $(document).on('mouseleave', 'a.g-tabs', function() { 
     $(this).find(".icon-clear-remove:last").remove(); 
    }); 
}); 

JS th th在關注如果頁面被刷新

<!-- Other tabs from the database --> 
<c:forEach var="tabNames" items="${ allTabs }"> 
    <li><a href="#tab_${ tabNames.value }" data-toggle="tab" class="g-tabs">${ tabNames.key }&nbsp;</a></li> 
</c:forEach> 

酥料餅添加新的選項卡

<!-- Add new tab --> 
<li><a href="#" id="popover">New <i class="icon-plus-sign"></i></a></li> 
+1

如何'remove'稱爲 –

+0

你可以做一個小提琴?它會更容易理解 – Hiral

+0

@ArunPJohny我更新了問題 – user2785929

回答

1

的主要問題是remove方法不知道哪個元素,它獲取調用,我已經改變了刪除使用jQuery處理程序,而不是內聯單擊處理。

嘗試

$(document).on('mouseenter', 'a.g-tabs', function() { 
    $(this).append($('<i class="icon-clear-remove"></i>')); 
}); 
$(document).on('mouseleave', 'a.g-tabs', function() { 
    $(this).find(".icon-clear-remove:last").remove(); 
}); 

jQuery(function() { 
    $(document).on('click', '.icon-clear-remove', function() { 
     var $this = $(this); 
     bootbox.confirm("Are you sure?", function (result) { 
      if (result != false) { 
       alert('delete:' + $this[0].tagName) 
       var $a = $this.closest('.g-tabs'); 
       alert($a.length) 
       $($a.attr('href')).remove(); 
       $a.parent().remove(); 
       $(".nav-tabs li").children('a').first().click(); 
      } 
     }); 
    }) 
}) 
+0

仍然無法正常工作。我更新了我的問題以獲取更清晰的視圖 – user2785929

+0

@ user2785929確認消息是否正在顯示? –

+0

@ user2785929我用2條警告語句更新了代碼它們顯示的是什麼 –

0

我不能告訴你究竟是如何實現這一點,但如果我的猜測是正確的應該工作。 如果它不起作用,你應該考慮設置一個小提琴。

function remove() { 
    bootbox.confirm("Are you sure?", function(result) { 
     if (result) { $(this).remove(); } 
    }); 
} 
+0

我更新了問題以獲得更清晰的視圖 – user2785929