2012-08-24 86 views
0

我有「dinamic」手風琴。點擊「addBtn」創建新元素。每個元素都有刪除當前元素的按鈕「刪除」。刪除當前元素jquery accordion

HTML

<div id="accordion"> 

         <div id="aE"> 
          <div id="aT" class="aT_val"> 
           <h3></h3> 
          </div> 

          <div id="aC" class="aC_val"> 
           <p></p> 
          </div> 

          <div id="deleteBtn" class="deleteBtn"><img src="images/del.png"></div> 

         </div> 

        </div> 

JS

$('#addBtn').click(function() { 
     count++; 

     $('#accordion').append('<div id="aE' + count + '"><div id="aT' + count + '" class="aT_val"><h3></h3></div><div id="aC' + count + '" class="aC_val"><p></p></div><div id="deleteBtn' + count + '" class="deleteBtn"><img src="images/delete-button.png"></div></div>'); }); 

$('#deleteBtn' + count).click(function() { 
     $('#aE' + count).remove(); 
    }); 

但 「deleteBtn」 不刪元素 「AE」。這怎麼解決?

回答

0

'#aE' + count正在對點擊進行評估,而不是創建函數,因此它將是最後一次使用的值count而不是按鈕生成時的值。

0

#deleteBtn的onclick回調函數正在與父範圍的差異上下文中進行評估。

$('#deleteBtn' + count).click(function() { 
    // this will always return a fixed number 
    $('#aE' + count).remove(); 
}); 

試試這個

$('#deleteBtn' + count).click(function() { 
    // this will return a correct id 
    var cnt = this.id.replace('deleteBtn', ''); 
    $('#aE' + cnt).remove(); 
}); 
+0

或者更簡單地$(本).parent( 'DIV')刪除()。 –

+0

我認爲你引用的'$(this)'或'#deleteBtn'是'#aE'的子元素。 – Rezigned

+0

men,$(this).parent('div')。remove();作品,但只有沒有「數」。像這樣$( '#deleteBtn')點擊(函數(){ \t \t \t $(本).parent( 'DIV')刪除() \t \t。}); – user1616369