我使用的追加內容的列表後:jQuery的 - 執行回調追加
$('a.ui-icon-cart').click(function(){
$(this).closest('li').clone().appendTo('#cart ul');
});
我想執行其他功能的附加內容(其他類,應用動畫等)
我怎樣才能對此函數執行回調,這將允許我對附加數據執行函數?
我使用的追加內容的列表後:jQuery的 - 執行回調追加
$('a.ui-icon-cart').click(function(){
$(this).closest('li').clone().appendTo('#cart ul');
});
我想執行其他功能的附加內容(其他類,應用動畫等)
我怎樣才能對此函數執行回調,這將允許我對附加數據執行函數?
jQuery的.each()
需要一個回調函數並將其應用於在jQuery對象的每個元素。
想象這樣的事情:
$('a.ui-icon-cart').click(function(){
$(this).closest('li').clone().appendTo('#cart ul').each(function() {
$(this).find('h5').remove();
$(this).find('img').css({'height':'40px', 'width':'40px'});
$(this).find('li').css({'height':'60px', 'width':'40px'});
});
});
你也只是結果和工作在其上存儲來代替:
$('a.ui-icon-cart').click(function(){
var $new = $(this).closest('li').clone().appendTo('#cart ul')
$new.find('h5').remove();
$new.find('img').css({'height':'40px', 'width':'40px'});
$new.find('li').css({'height':'60px', 'width':'40px'});
});
我也建議,與其mofiying像您剛纔的CSS添加一個類到你的克隆李像這樣:
$(this).closest('li').clone().addClass("new-item").appendTo('#cart ul');
然後設置一些樣式,如:
.new-item img, .new-item li { height: 40px; width: 40px; }
.new-item h5 { display: none }
您可以繼續使用分號鏈接進一步的操作。
$(this).closest('li').clone().appendTo('#cart ul').addClass('busy').fade('fast');
等
我將如何落實成鏈這樣的: $(本).find( 'H5')刪除(); (this).find('img')。css('height','40px','width','40px'); (this).find('li').css('height','60px','width','40px'); – user342391 2010-06-24 21:07:48
這沒有幫助,問題是如何在執行附加操作後應用回調。 DOM操作是異步執行的。因此,在鏈的下一部分,附加的內容尚不可見。 – douwe 2013-03-05 06:12:28
不幸地給dom操作添加回調並不是可以用整潔的方式使用javascript來完成的。由於這個原因,它不在jQuery庫中。但是定時器「1ms」的settimeout總是將函數置於調用堆棧底部的settimeout中。這確實有用! underscore.js庫在_.defer中使用這種技術,它完全符合你的需求。
$('a.ui-icon-cart').click(function(){
$(this).closest('li').clone().appendTo('#cart ul');
setTimeout(function() {
// The LI is now appended to #cart UL and you can mess around with it.
}, 1);
});
DOM操作是同步的,沒有理由去「_.defer」任何東西 – gnarf 2013-03-06 03:36:08
謝謝,這正是我需要的!我的情況是將HTML實體附加到容器,而不是將事件綁定到它。一直努力使它工作一段時間... – 2014-08-08 21:39:26
太棒了!不是我遇到的最明顯的解決方案,但它可以工作:-) – bestprogrammerintheworld 2014-08-13 14:04:32
嗯..第二個例子仍然會異步啓動,並且在大多數情況下,當它們需要回調時,*在appendTo – Trip 2012-07-09 14:23:46
之後不起作用。我不確定您瞭解asynch的含義是什麼意思@Trip ---所有上面的代碼是同步的。這段代碼中沒有異步調用。即使每個內部的回調仍然是同步的,它立即被調用。兩個示例中唯一的區別是,第一個示例在第一個示例中創建了一個新的範圍,您可以爲每個匹配的元素存儲變量,否則它們應該以相同的方式工作。 – gnarf 2012-07-09 15:25:48
我錯了!謝謝:) – Trip 2012-07-09 16:00:47