在sharrre Jquery

时间:2016-01-05 22:54:01

标签: javascript jquery filtering sharing

我的问题如下:

我的页面上有多个过滤器,可以动态过滤事件计划,因此当我点击任何过滤器时,我的网址会更改而不会重新加载页面。

例如:

  

http://.../schedule/#Screening,Free

     

http://.../schedule/#Talk,Expo

然后,我与Sharrre共享按钮:

    .social.social--share-filters
        a.icon.icon-twitter.js-twitter-filters(href="#", target="_blank")
        a.icon.icon-linkedin2.js-linkedin-filters(href="#", target="_blank")
        a.icon.icon-facebook.js-facebook-filters(href="#", target="_blank")
  $('.js-facebook-filters').sharrre({
share: {
  facebook: true,
},
url: window.location.href,
enableTracking: false,
enableHover: false,
click: function(api, options) {
  api.simulateClick();
  api.openPopup('facebook');
}
  });

尽管如此,在内部清单中我有url变量等于当前链接,它只共享第一次加载页面时派生的链接。

我试图将它放在图标上的点击事件中 - 这不起作用。 我试图在一个函数(例如,initialiseShare)中加入sharrre并执行window.initialiseShare = initialiseShare; - 这也不起作用。 我试图删除并附加按钮,更改data-url属性,它也不起作用。

function initialiseShare(link) { 
   $('.js-twitter-filters').sharrre({
    share: {
      twitter: true,
    },
    enableTracking: false,
    enableHover: false,
    click: function(api, options) {
      api.simulateClick();
      api.openPopup('twitter');
    }   }); }

+

$(document).ready(function() {
    initialiseShare();
    $('.js-twitter-filters').on('click', function(){
        var clone = $('.js-twitter-filters').clone();
        $('.js-twitter-filters').remove();
        $('.social--share-filters').append(clone);
        $('.js-twitter-filters').data('url', window.location.href);
        initialiseShare();
        return false;
    });
});

+

玉的图标

    .social.social--share-filters
        a.icon.icon-twitter.js-twitter-filters(href="#", target="_blank" data-url="#")

请帮忙!

提前谢谢!

P.S。我可以使用任何其他解决方案,除了那些可能导致无法在设计中定制的按钮。

1 个答案:

答案 0 :(得分:0)

试试这个:

$('body').on('DOMNodeInserted', '.js-twitter-filters', function(e) {
  $(this).sharrre({
    share: {
      twitter: true,
    },
    enableTracking: false,
    enableHover: false,
    click: function(api, options) {
      api.simulateClick();
      api.openPopup('twitter');
    }
  });
});

<强>解释

您正在尝试绑定到动态加载的元素。当您的脚本在页面加载时执行时,这些元素不可用于jQuery以“sharrre”执行绑定 - 因此您可以使用.on()活动绑定委托在插入后绑定到元素。

<强>参考: