2011-12-14 39 views
2

我正在嘗試使用自定義複選框來選擇所有腳本,發生的情況是結果編號將更新,但顯示數量上升,因爲每個複選框都會提交表單以獲得準確的結果編號。然而,當選擇所有將啓動點擊事件的選項時,它將顯示正在進行的數字,並且我希望它只在.each事件完成後才顯示。與當前的代碼不會運行第二個功能,在這裏再次顯示DIV是我爲它的代碼任何幫助將是巨大的:在運行jquery .each()不起作用後顯示div

$('.select_all').live('click',function(){ 
    $('#psf_search_results_number').hide(); 
    $('.psf_grp_content input[name="type[]"]').each(function(){ 
     $(this).click(); 
    }); 
    return false; 
},function(){ 
    $('#psf_search_results_number').show(); 
}); 

回答

1

我認爲你應該做(但我讀心怎麼一回事,因爲它不是真的我清楚你的問題是什麼):

$('.select_all').live('click',function(){ 
    $('#psf_search_results_number').hide(); 
    $('.psf_grp_content input[name="type[]"]').each(function(){ 
     $(this).click(); 
    }); 
    $('#psf_search_results_number').show(); 
    return false; 
}); 

你不能傳遞兩個功能live(),如果你想在each()後執行show()只是把它它

2

首先,後已被棄用,你應該使用.delegate()(pre-jQuery 1.7)或.on()(用於jQuery 1.7+)。

其次,.live()不需要兩個函數參數,所以難怪第二個函數不會被調用。

如果你只是想在.each()循環完成後調用第二功能,你可以做到這一點使用.on()這樣:

$(document.body).on('click','.select_all', function(){ 
    $('#psf_search_results_number').hide(); 
    $('.psf_grp_content input[name="type[]"]').each(function(){ 
     $(this).click(); 
    }); 
    $('#psf_search_results_number').show(); 
    return false; 
}); 

如果我們能看到你的HTML,這是共同的所有父對象.select_all元素會比使用document.body更好,但它會按照我所展示的那樣工作。

+0

了父母的照顧但它不正是你看這是之前做同樣的事情:http://50.28.19.26/並點擊開始搜索文檔的中間部分和彈出框出現在這一點上,點擊全部選擇下的類型,然後查看右側的結果編號,您將看到我在說什麼。 – 2011-12-14 18:18:54

1
.live(events, data, handler) 

事件含有JavaScript事件類型字符串,如 「點擊」 或 「的keydown」。從jQuery 1.4開始,字符串可以包含多個空格分隔的事件類型或自定義事件名稱。

數據將傳遞給事件處理程序的數據的映射。

處理程序在觸發事件時執行的函數。

.live()並不需要兩個函數參數