我有一個頁面,用戶點擊一個按鈕(「生成」)動態生成隨機短語使用從json文件拉的文本。該短語放置在一個div(#generated)中,替換之前存在的內容(單擊按鈕之前)。生成這個短語完美無缺。我現在要添加的內容是用戶點擊推文按鈕分享該短語的一種方式。jQuery延遲點擊後「複製」文本
這裏的鳴叫按鈕代碼:
<div id="tweet_button">
<a href="http://twitter.com/share"
class="twitter-share-button"
data-text="This is what we want to change dynamically"
data-count="none">Tweet</a></div>
加上這頭:
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
的data-text
就是我正在尋找後的按鈕使用div的內容鳴叫按下。這裏是我的問題:
首先,如果嘗試這個辦法:
$(document).ready(function(){
$.getScript('http://platform.twitter.com/widgets.js');
$('a[data-text]').each(function(){
$(this).attr('data-text', $('#generated').text());
});
});
那當然,從「這是我們要動態地改變」什麼是在div「生成」以前data-text
變化按鈕被按下(即文檔準備好時有什麼),這不是我想要的。所以,我想我可以利用這個代碼,並data-text
將改變到div的新生成的內容:
$("generate").click(function() {
setTimeout(function(){
$.getScript('http://platform.twitter.com/widgets.js');
$('a[data-text]').each(function(){
$(this).attr('data-text', $('#generated').text());
});
},
1000);
});
在我看來,這會等到「生成」按鈕被點擊,一秒鐘的延遲(以確保div內容更改),然後用div的新內容更新data-text
。當然,這是行不通的。
理想情況下,每次單擊「生成」按鈕時都會更新data-text
。似乎可能有辦法做到這一點(https://dev.twitter.com/discussions/890)的一部分,但現在我只是擔心如上所述的第一部分。
希望這是有道理的...任何想法如何實際做到這一點?感謝這位新手的支持。
你爲什麼在這裏使用$ .getScript?我不明白 –
事後看來,可能不需要這一行,因爲我在標題中有這個完整的twitter腳本,但是你認爲這是問題嗎?我刪除了該行,並沒有產生任何影響。 – jonmrich
當然,你不應該加載腳本兩次,但我不認爲它是你的問題。事實上,我不太瞭解你的問題。您應該將您的點擊處理程序包裝在文檔中。檢查你的點擊事件是否被解僱。但是,從哪裏來的動態文本,以及如何? –