2011-06-21 44 views
1

在此的jsfiddle爲什麼不執行第一次點擊?

http://jsfiddle.net/littlesandra88/RBU8K/

有我下面的代碼

function addRemove(id) { 
    alert("1"); 

    $('#'+id).toggle(function() { 
    alert("2"); 
    $('#'+id).after('<tr id="details" ><td>It worked</td></tr>'); 

    }, function() { 
    alert("3"); 
    $("#details").remove();  
    }); 
} 

當點擊一次 「詳細信息」 它打印 「1」,而不是 「2」 出於某種原因。

當第一次點擊完成後,它就像它應該的那樣工作。

但是怎麼回事,因爲第一次點擊不打印出「2」?

如何解決?

更新

這是解決

function addRemove(id) { 

    if ($('#accTable').find("[id*='details']").length == 0) { 
    $('#'+id).after('<tr id="details" ><td>It worked</td></tr>'); 
    } else { 
    $("table tr").remove("#details"); 
    } 

} 

回答

3

調用addRemove()時,再次單擊事件處理程序被觸發,則後,您只安裝一個事件處理(切換啄)。

+0

這很有道理我猜=)我們該怎麼做? –

+0

你想做什麼? –

+0

@JanHančič:我希望當點擊「詳細信息」時,點擊一個新行「​​它的工作原理'正被添加到下面。當再次點擊「詳細信息」時,應該刪除它。理想情況下,任何時候只有一個新行必須存在,因此如果在另一行上單擊了Details,它應該刪除添加新行之前已經添加的行。 –

相關問題