2016-08-24 47 views
2

我有一個表包含幾行,其中每行表示一個可導出的文件,摹: 使用jQuery的每個打開下載窗口()

<tr> 
    <th class="text-center" scope="row"> 
    <input id="exportID-23" type="checkbox" /> 
    </th> 
    <td class="text-center text-nowrap">2016-08-24</td> 
    <td>Name</td> 
    <td>City</td> 
    <td class="text-center text-nowrap">Person</td> 
</tr> 
[...] 
<button id="exports" class="btn btn-success" type="button"> 
    <span class="glyphicon glyphicon-export"></span> Export 
</button> 

爲了只返回根據用戶的導出按鈕點擊請求這些文件,我寫了這個:

$('#exports').click(function() { 
    var exports = $(this); 

    $('[id^=exportID-]').each(function() { 
    if (this.checked) { 
     window.open('ajax/get-exports.php?ExportID=' + this.id.substring(9)); 
    } 
    }); 
}); 

現在,使用Firefox的開發者控制檯調試我的代碼,each()按預期工作:每次下載都會有一個新窗口。
但是,在沒有調試器的情況下運行相同的代碼,它只會爲最後一個選定行打開一個新窗口。

不幸的是,我無法找到這個問題的答案 - 無論是在互聯網的深處還是其他地方,所以:我做錯了什麼?

+1

打開開發者控制檯並執行代碼通常會導致緩存問題。你可以請CTRL + SHIFT + DEL,並清除你的緩存,並嘗試執行你的代碼,而無需打開dev控制檯。 –

+0

非常感謝@DavidR!這確實是一個緩存問題。 如果您添加您的評論作爲答案,我會高興地接受它。 :) – Yoda

+0

已經完成! :) 對不起錯誤提及,但SO似乎與包含空格的用戶名掙扎 - 我點擊了多次自動完成,但保存後,它不會變成一個可點擊的文本。 :( – Yoda

回答

1

具有開發者控制檯打開和執行你的代碼往往消除緩存的問題。您可以請您做一個CTRL + SHIFT + 刪除並清除您的緩存並嘗試執行您的代碼,而無需打開開發者控制檯。

希望這會有所幫助!