2015-09-07 69 views
0

我有一個網頁與AJAX加載內容。如果我點擊「出口」的內容重新加載並生成一個HTML A-元素使用PHP:jQuery使用.on(加載)與ajax加載內容

<a style=\"display:none;\" id=\"menue-export-link\" href=\"download/".$this->select->downloadcsv."\"></a> 

現在我想自動開始下載,所以我寫了下面的JavaScript代碼,開始在A-下載元素負載:

$(document).ready(function() { 
    $(document).on('load', '#menue-export-link', function() { 
     console.log('click export'); 
     $('#menue-export-link').click(); 
     $('#menue-export-link').remove(); 
    }); 
}); 

但沒有任何反應,有人有什麼想法嗎?

+0

使用[觸發](http://api.jquery.com/trigger/) – Bugfixer

回答

0

首先,html錨點元素沒有loadonload事件。 所以@TheF說你必須在你的ajax成功回調中觸發下載。請記住在DOM中添加html後找到並觸發它。有關jQuery的更多信息,請訪問jQuery AJAX http://api.jquery.com/jquery.ajax/

現在觸發下載部分。觸發導致導航的點擊事件有點棘手。以下問題的答案是很清楚jQuery: how to trigger anchor link's click eventHow can I simulate an anchor click via jquery?

+0

非常感謝:-) 這是下一個問題。我用元素Index的規範解決了它:'$('#menue-export-link')[0] .click(); \t' – Phil795

+0

我實際上面臨觸發錨元素的單擊事件的同一問題:) –

0
$(document).on("click", "#menue-export-link", function() { 
    console.log("click export"); 
}); 
+0

我覺得他/她想要避免點擊,但想要觸發下載一旦鏈接實際上被加載。 –

+0

不管怎麼說,動態創建的元素需要觸發如上 –

0

你的JS當你的主網頁加載觸發和#menue-export-link可能並不存在於那個時候。如果使用$.ajax加載該鏈接,請將您的JavaScript放在success回調中,以確保您的鏈接存在或正在加載,然後再觸發代碼。

+0

謝謝,它實際上是易:d – Phil795

+0

我解決這樣的: ' 如果($(「#menue出口鏈接」)的長度。){ \t \t \t \t \t console.log('click export'); \t \t \t \t \t $('#menue-export-link')。click(); \t \t \t \t \t} ' – Phil795

+0

很好用。但是,下次嘗試使用jQuery提供的工具來解決它。如果您想分享您的實際ajax電話,我們可以幫助您。阿什拉夫也分享了一些不錯的資源。 –