2016-09-18 68 views
0

我一直在嘗試3天,找出爲什麼attr()不能在JQuery中的函數內工作。它可能看起來像問題已經回答,但他們都沒有爲我工作。jquery attr()不能在裏面點擊功能

我在嘗試將data-text屬性從鳴叫按鈕更改爲發送當前文本。

這裏是我的代碼:

$(".twitter-share-button").attr("data-text", "Hello World"); //Working 

$("#change").on("click", function() { 
    $(".twitter-share-button").attr("data-text", "Hello Universe"); // Not working 
}); 

例中的jsfiddle:https://jsfiddle.net/ooneskbe/

+0

也許'cilck'事件沒有被解僱。 – Mohammad

+0

這與attr在函數中沒有任何關係,它只是不起作用,因爲twitter代碼會將新元素替換爲您的元素,並將「data-text」存儲在其他位置。 – tkausl

+0

似乎工作得很好 - > https://jsfiddle.net/adeneo/ooneskbe/1/但按鈕插入一個iFrame並採用頁面加載的屬性值 – adeneo

回答

1

你的問題並不能代表全貌。之所以這不起作用,是因爲您包含以下腳本:

<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 

此腳本更改您的HTML。如果不包括腳本,一鍵生成HTML是

<a class="twitter-share-button" href="https://twitter.com/share" data-show-count="false" data-size="large">Tweet</a> 

然而,一旦該腳本加載和執行,你的HTML變得

<a class="btn" id="b" href="https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Ffiddle.jshell.net%2F_display%2F&amp;ref_src=twsrc%5Etfw&amp;tw_p=tweetbutton&amp;url=https%3A%2F%2Ffiddle.jshell.net%2F_display%2F"> 
    <i></i> 
    <span class="label" id="l">Tweet</span> 
</a> 

你可以看到,新的HTML沒有類別twitter-share-button。我不確定你想用data屬性來實現什麼,但是你需要想辦法做到這一點。

+0

我試圖鳴叫隨機生成的報價,它工作正常第一次加載頁面時,但一個點擊按鈕後,更改報價是不行的。 –

+0

我需要生成隨機報價並能夠在Twitter上分享。 它是免費的代碼陣營的小應用程序:https://codepen.io/sadraque/full/kkrypA –

+0

@SadraqueSantos它的工作原理第一次加載頁面時,因爲還沒有執行Twitter的插件腳本,所以你能按類「twitter-share-button」查找元素。腳本執行後,這個類不再存在。 – dotnetom

0
$(".twitter-share-button").attr("data-text", "Hello World"); 
var dataObj = $(".twitter-share-button").data(); 
$("#change").on("click", function() { 
    dataObj.text = "Hello Universe"; 
    $(".twitter-share-button").data(dataObj); 
}); 

嘗試:https://jsfiddle.net/667f171z/1/

+0

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone