2013-06-03 75 views
0

我有下面的代碼,當點擊一個複選框時,它會創建一個包含一些信息的div。然而,在該div中,我添加了一個錨標籤來刪除div本身。刪除div點擊一個動態創建的鏈接

但是,我不知道如何去除鏈接點擊div,因爲div是動態生成的。

//Add selected job in the results div 
function AddSelectedJob(id, display) { 
    //create a div for every selected job 
    $("[id$=ResultsDiv]").append('<div class="selectedjobs" id=' + id + '>' + display + '<a href="#">Remove selected job</a></div>'); 
} 
+0

嘗試刪除this.parent()jquery代碼 – Hkachhia

+0

事件代理。 – Johan

+0

偏離主題,但有趣的閱讀有關href =#。 http://stackoverflow.com/questions/134845/href-attribute-for-javascript-links-or-javascriptvoid0 –

回答

2

使用本CODE: -

//添加所選作業的結果DIV

function AddSelectedJob(id, display) { 
    //create a div for every selected job 
    $("[id$=ResultsDiv]").append('<div class="selectedjobs" id=' + id + '>' + display + '<a href="javascript:;" onclick="removeSelectedJob(this)">Remove selected job</a></div>'); 
} 

function removeSelectedJob(el){ 
    $(el).parent().remove(); 
} 
+1

我知道你很想使用這個快速修復,使用onclick屬性是不靈活的,因爲我想我的JS從我的HTML單獨分離不需要。使用這個,你只能添加1個事件處理程序。 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener#Why_use_addEventListener.3F –

4
$(document).on('click','.selectedjobs a',function(){ 
     $(this).parent().remove(); 
}); 
+1

指定它到最近的靜態父級更好'[id $ = ResultsDiv]'在這種情況下' – bipen

0

類似:

$("#ResultsDiv>div.selectedjobs a").click(function(){ 
    $(this).parent().remove(); 
}); 
+1

不會因爲div是動態添加的。 – Johan

+0

好點!好吧,我會在這裏回答這個問題,指出你不應該使用我的答案;)感謝Johan! –

4

給你div一類,並使用on委託事件

試試這個

$("[id$=ResultsDiv]").append('<div class="selectedjobs" id=' + id + '>' + display + '<a href="#" class="removeJob">Remove selected job</a></div>'); 

$('[id$=ResultsDiv]').on('click','.removeJob',function(){ 
    $(this).parent().remove(); 
}) 

不使用類

$('[id$=ResultsDiv]').on('click','.selectedjobs a',function(){ 
    $(this).parent().remove(); 
}) 

注:delgating到最接近的靜態父容器比document本身

link更好的瞭解更多關於on事件

0

嘗試直播點擊...

$(".selectedjobs a").live("click", function(){ 
    $(this).parent().remove(); 
}); 
+3

live()已棄用,請使用on()。 http://api.jquery.com/live/ –

0

在這種情況下的div通常不被創建,但都比較隱蔽,而不是由你會很多麻煩。您可以創建一個具有「display:none;」的div在CSS然後當tickbox被選中,你可以使用

$("[id$=ResultsDiv]").show(); 

,當它未被選中,

$("[id$=ResultsDiv]").hide(); 
0

我更喜歡使用。家長()在這種情況下。

如果可能的話,將一個類添加到您的錨點,然後返回false或使用.preventDefault()來防止錨點的默認操作。

//Add selected job in the results div 
function AddSelectedJob(id, display) { 
    //create a div for every selected job 
    $("[id$=ResultsDiv]").append('<div class="selectedjobs" id=' + id + '>' + display + '<a class="removeSelectedJobs" href="#">Remove selected job</a></div>'); 
} 

$('.selectedjobs .removeSelectedJobs').live('click', function() { 
    $(this).parents('.selectedjobs').remove(); 
    return false; 
}); 
+0

live()從幾個版本之前的jQuery中刪除。而不是在()上使用,也可以像.live():)一樣工作 – stefanz