单击twitter按钮时获取数据attr。

时间:2013-10-07 22:39:30

标签: jquery twitter

点击推文按钮时,我需要访问data-url =“some link”。

使用此代码:

twttr.events.bind('click', function(event) {

var tweeturl = $('.twitter-share-button').data("url");
var count = $('.twitter-share-button').data("count");
console.log(tweeturl, count);
});

然而,控制台正在输出'undefined undefined'。谁能告诉我为什么会这样,以及如何解决它?

查看完整的JS Fiddle

非常感谢大家。

2 个答案:

答案 0 :(得分:2)

获取网址很简单,只需使用此HTML:

<div id="foo" data-url="http://ios-blog.co.uk">
    <!-- other html -->
</div>

和这个事件处理程序:

twttr.events.bind('click', function(event) {
    var link = $(event.target).parent().data('url');
    console.log(link);
});

Twitter的javascript将.twitter-share-button链接转换为包含共享按钮html的iframe。这意味着当您尝试在代码中选择它时,实际上您选择的iframe没有链接所具有的data-*属性。

由于名为Same-origin policy的内容,您也无法获取iframe的内容并找到计数。

但是,你 能够使用Twitter的api获取推文数量:

$.ajax({
    dataType: "jsonp",
    url: 'http://urls.api.twitter.com/1/urls/count.json?url=http://ios-blog.co.uk',
    success: function (data) {
        console.log(data.count);
    }
});

请参阅此工作示例:http://jsfiddle.net/TDgX5/

但是,这是不是官方推荐的方法,可能不应过分依赖。可能有更好的方法来解决您的问题,您使用的是什么?

答案 1 :(得分:1)

看起来Twitter API正在改变您的链接并将其放入IFrame中。因此链接可以更长时间访问。我可能需要更好地了解您的问题,以便正确回答您的问题。

但是你也可以将你的数据存储在foo元素中吗?

twttr.events.bind('click', function(event) {
  var tweeturl = $('#foo').data("url");
  var count = $('#foo').data("count");
  console.log(tweeturl, count);
});

实施例

http://jsfiddle.net/ZwHBf/87/