在sharrre Jquery中动态更改url

Dynamically changing url in sharrre Jquery

本文关键字:url 动态 sharrre Jquery      更新时间:2023-09-26

我的问题如下:

我的页面上有多个过滤器,它们动态地过滤事件,所以当我点击任何过滤器时,我的url都会更改,而不会重新加载页面。

例如:

http://.../schedule/#Screening,免费

http://.../schedule/#Talk,世博

然后,我与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');
}
  });

尽管在sharrre中我有一个url变量,它等于当前链接,但它只共享第一次加载页面时派生的链接。

我试着把它放在图标上的点击事件中——这不起作用。我试图将sharrre放在一个函数中(例如initializeShare)并执行window.initialiseShare = initialiseShare;,但这也不起作用。我尝试删除和附加按钮,更改数据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="#")

求你了,救命!

提前谢谢!

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

试试这个:

$('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()实时绑定委托在插入后绑定到元素。

参考:

  • http://api.jquery.com/on/