bshare分享插件的ajax应用

在做新浪某个项目的时候,在ajax动态加载的时候,想增加分享功能,采用bshare插件。怎么办呢,看API?可是采用方法调用的时候,不是会重复绑定事件,就是会丢失事件,原因我想在于异步加载的原因。

后来联系客服,不断地调配,终于成功了。分享一下方法

function makeActives(activePage,activeClass)//theClassify为分类参数,在condition里面定义
{
    //GET请求地址
    var category=activeClass,
        page=activePage,
        size=5,
        loadMoreApplyURL=‘/api/event/get_list/?category=‘+category+‘&size=‘+size+‘&page=‘+page;
    arr1={"上海": "31","云南": "53","其他": "100","内蒙古": "15","北京": "11","台湾地区": "71","吉林": "22","四川": "51","天津": "12","宁夏": "64","安徽": "34","山东": "37","山西": "14","广东": "44","广西": "45","新疆": "65","江苏": "32","江西": "36","河北": "13","河南": "41","浙江": "33","海南": "46","海外": "400","湖北": "42","湖南": "43","澳门地区": "82","甘肃": "62","福建": "35","西藏": "54","贵州": "52","辽宁": "21","重庆": "50","陕西": "61","青海": "63","香港地区": "81","黑龙江": "23"},
        arr2={‘高考‘:"1","国际学校":"2","留学":"3","中小学":"4","商学院":"5","外语":"6","其他":"7"},
        arr3={‘线上‘:"1","线下":"2"}
    $.ajax({
        url: loadMoreApplyURL,
        async: false,
        type: ‘GET‘,
        dataType: ‘jsonp‘,
        success: function(data){
            callbackFunction(data, activePage);
        },
        error: function(xhr,type){
            //报错信息
            alert("读取json失败");
        }
    });
    function callbackFunction(json, activePage)
    {
        if(json.result.status.code=="0"){
            var pageN=json.result.data["total_number"];
            $(".scroll-data").attr("total-page",pageN);
            if (creatPages==true) {
                $("#subShowContent1_page").html("");
                findPageNum(activeClass);
                creatPages=false;
            }
            for(var i=0;i<5;i++)
            {
                var arr=[];
                if (json.result.data.list[i]==undefined) {
                    break;
                }
                //标题  3月15日……
                var title=json.result.data.list[i].title,
                //标题的url
                    titleUrl = json.result.data.list[i].url,
                //左侧
                //图片地址
                    imgUrl = json.result.data.list[i].image,
                //活动生成日期
                    creatTime = json.result.data.list[i].publish_time,
                //分类信息
                    province = json.result.data.list[i].province,
                    provinceId = arr1[province],
                    category = json.result.data.list[i].category,
                    categoryId = arr2[category],
                    online = json.result.data.list[i].online,
                    onlineId = arr3[online],
                //右侧
                //活动概要前40个字符
                    summary = (json.result.data.list[i].summary.length > 40) ? (json.result.data.list[i].summary.substring(0,40) + ‘...‘) : json.result.data.list[i].summary,
                //活动时间
                    activeTime = json.result.data.list[i].event_time,
                //活动地点
                    activePlace = json.result.data.list[i].address,
                //适合人群
                    activePerson = json.result.data.list[i].viewer,
                //活动嘉宾
                    vip = json.result.data.list[i].guest,
                //已经报名的人数
                    hasApplyNum = json.result.data.list[i].sign_num,
                //未报名的人数
                    ApplyLeftNum = json.result.data.list[i].left_num,
                //评论数
                    commentNum = json.result.data.list[i].commentNum,
                //评论url
                    commentUrl = json.result.data.list[i].commentUrl,
                //标题栏的时间
                    titleTime = json.result.data.list[i].event_date,
                //id
                    activeId = json.result.data.list[i].id,
                //是否报名
                // btnObj.removeClass(‘btn-regis2 thisFloat‘).addClass(‘btn-regis-ed‘).text(‘已报名‘);
                // btnObj2.removeClass(‘link-none‘);
                    isBaoMing = json.result.data.list[i].event_status,
                    user_event_sign = json.result.data.list[i].user_event_sign,
                    detailUrl = ‘http://events.edu.sina.com.cn/event/detail/‘+activeId;
                arr.push(‘<li class="liPage‘+startBind+‘" data-title="‘+title+‘" data-url="‘+titleUrl+‘" data-summary="‘+summary+‘" data-pic="‘+imgUrl+‘"><h3 class="tit2"><em>‘+titleTime+‘</em>‘);
                arr.push(‘<a href="‘+titleUrl+‘" class="title">‘+title+‘</a></h3>‘);
                arr.push(‘<div class="cont1 clearfix"><a href="‘+titleUrl+‘" class="with-map2 left"><img src=‘+imgUrl);
                arr.push(" ‘alt=‘‘></a><div class=‘infor1‘><p class=‘w1‘>"+"<span class=‘summary‘>"+summary+"</span>");
                arr.push(‘<a href="‘+titleUrl+‘">[详细]</a></p>‘);
                arr.push(‘<p class="msg2"><span class="contr">活动时间:</span><span>‘+activeTime+‘</span></p>‘);
                arr.push(‘<p class="msg2"><span class="contr">活动地点:</span><span>‘+activePlace+‘</span></p>‘);
                arr.push(‘<p class="msg2"><span class="contr">适合人群:</span><span>‘+activePerson+‘</span></p>‘);
                arr.push(‘<p class="msg2"><span class="contr">活动嘉宾:</span><span>‘+vip);
                arr.push(‘<a href="‘+titleUrl+‘#guests">更多</a></span></p>‘);
                if (user_event_sign==1) {
                    arr.push(‘<div class="btn-wrap2"><a href="javascript:void(0);" class="btn2 btn-regis-ed jsBtnSignup" id="‘+activeId+‘">已报名</a>‘);
                    arr.push(‘<a href="javascript:void(0);" class="baomingCancel" style="margin-left: 15px;color: #008acb;">取消</a>‘);
                }
                if (user_event_sign==0){
                    if(isBaoMing==0){
                        arr.push(‘<div class="btn-wrap2"><a href="javascript:void(0);" class="btn2 btn-regis2 jsBtnSignup" id="‘+activeId+‘">立即报名</a>‘);
                        arr.push(‘<a href="javascript:void(0);" class="baomingCancel" style="display:none;margin-left: 15px;color: #008acb;">取消</a>‘);
                    }
                    if(isBaoMing==1){
                        arr.push(‘<div class="btn-wrap2"><a href="javascript:void(0);" class="btn2 btn-regis-ed jsBtnSignup" id="‘+activeId+‘">报名结束</a>‘);
                    }
                    if(isBaoMing==2 || isBaoMing==3){
                        arr.push(‘<div class="btn-wrap2"><a href="‘+detailUrl+‘" class="btn2 btn-regis-ed jsBtnSignup" id="‘+activeId+‘">查看详情</a>‘);
                    }
                }
                // 更改deatil套页面的时候,一处style="margin-left: 10px;",两处style="font-size: 14px;"都分别加上
                arr.push(‘<span class="msg3" style="margin-left: 10px;">已报<em style="font-size: 14px;">‘+hasApplyNum+‘</em>人</span>‘);
                arr.push(‘<span class="msg3">还剩<em style="font-size: 14px;">‘+ApplyLeftNum+‘</em>个名额</span></div></div></div>‘);
                // 更改结束
                arr.push(‘<div class="msgshop clearfix"><p class="date-msg left">‘+creatTime+‘</p>‘);
                arr.push(‘<dl class="msg4 left"><dt>分类:</dt>‘+‘<dd><a href="/event/search/?province=‘+provinceId+‘">‘+province+‘</a></dd>‘+‘<dd><a href="/event/search/?category=‘+categoryId+‘">‘+category+‘</a></dd>‘+‘<dd><a href="/event/search/?online=‘+onlineId+‘">‘+online+‘</a></dd>‘+‘</dl><div class="link1 right">‘);
                // 更改detail套页面的时候,相应的地方加上&nbsp;&nbsp;,没评论的时候把括号和数字去了
                if(commentNum=="0"){
                    arr.push(‘<div style="float:left;"><a href="‘+commentUrl+‘">评论&nbsp;&nbsp;|&nbsp;&nbsp;</a>‘);
                }
                else{
                    arr.push(‘<div style="float:left;"><a href="‘+commentUrl+‘">评论(‘+commentNum+‘)&nbsp;&nbsp;|&nbsp;&nbsp;</a>‘);
                }
                arr.push(‘<span>分享</span></div><div class="button-share"><a title="分享到新浪微博" class="share-weibo" id="weibo‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘sinaminiblog‘,"+startBind+‘)"></a><a title="分享到微信" class="weixin" id="weixin‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘weixin‘,"+startBind+‘)"></a><a title="分享到QQ空间" class="qzone" id="qzone‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘qzone‘,"+startBind+‘)"></a><a title="更多平台" class="share-more" id="more‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘shareMore‘,"+startBind+‘)"></a></div>‘);
                // 新更改
                var html=arr.join(‘‘);
                $(".main-active-list").append(html);
                if ($(‘.jsBtnSignup‘).text()=="立即报名"){
                    $(‘.baomingCancel‘).show();
                }
                startBind+=1;
                // 更改
            }
        }
    }
}

重点在于这一段

arr.push(‘<span>分享</span></div><div class="button-share"><a title="分享到新浪微博" class="share-weibo" id="weibo‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘sinaminiblog‘,"+startBind+‘)"></a><a title="分享到微信" class="weixin" id="weixin‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘weixin‘,"+startBind+‘)"></a><a title="分享到QQ空间" class="qzone" id="qzone‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘qzone‘,"+startBind+‘)"></a><a title="更多平台" class="share-more" id="more‘+startBind+‘" href="javascript:void(0)" onclick="shareTo(this,‘+"‘shareMore‘,"+startBind+‘)"></a></div>‘);

因为是动态加载到dom里面,因此会有些问题,解决方法如下:先放置一个占位的图片,给每一个动态加载的元素赋上一个独特的id,保证分享的内容准确,然后给一个onlick调用shareTo方法,传三个参数,分别是self,分享平台的短名,分享内容的编号。

function shareTo(event, shortName,startBind) {
    //自定义设置内容,可动态获取当前页面内相应的参数进行传递
    var  jq=$("#weibo"+startBind),
        title=jq.parents(".msgshop").siblings(".tit2").find("a").text(),
        titleUrl=jq.parents(".msgshop").siblings(".tit2").find("a").attr("href"),
        summary=jq.parents(".msgshop").siblings(".cont1").find(".summary").text(),
        imgUrl=jq.parents(".msgshop").siblings(".cont1").find("img").attr("src");
    //清除自定义分享内容的方法,在设置前清空,重新自定义内容
    bShare.entries = [];
    //添加自定义分享内容方法,不需要自定义的可以传递,bshare js会主动抓取页面相应值默认
    bShare.addEntry({
        title: title,
        url: titleUrl,
        summary: summary,
        pic:imgUrl
    });

    if(bShare.isReady == true&& bShare.completed == true){
        //  alert("hello!");
    }else{
        bShare.isReady = false;
        bShare.completed = false;
        bShare.start();
    }

    //调用相应的分享方法,
    if (shortName=="shareMore") {
        bShare.more(event);
    }
    else{
        bShare.share(event, shortName);
    }
}

完美的解决分享的问题,这个方法在官方API上没有例子,得牢记

bshare分享插件的ajax应用

时间: 2024-10-24 01:12:30

bshare分享插件的ajax应用的相关文章

bShare分享插件|自定义分享按钮|异步加载分享解决办法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

一种牛逼的网站分享插件实现

网站分享插件,网上一大堆,只不过都需要集成别人封装好的或者自己挨个把每家的都实现一遍,相当麻烦. 这里推荐一种另辟蹊径的实现方式: 来自: https://tumutanzi.com/archives/11987 总而言之,一句话,直接在<a>标签里面href加上js代码,就能实现分享网站的效果了. 如下: <!-- 社会化分享 --> <ul> <li><a href="javascript:var d=document,f='https:

Struts2之—集成Json插件实现Ajax

   上篇博客介绍了Struts2中自定义结果集实现Ajax,也分析了它的缺点:这样自定义的结果集,写死了,不能做到客户端需要什么数据就传什么数据:Struts2之-自定义结果集实现ajax 本篇博客提出Struts2的集成Json插件,很好的解决了自定义结果集带来的问题. 一,引题 1,Json数据格式简介 因为JSON是脱离语言的理想的数据交换格式,所以它被频繁的应用在客户端与服务器的通信过程中,这一点是毋庸置疑的.而在客户端与服务器的通信过程中,JSON数据的传递又被分为服务器向客户端传送

实现分享功能插件2---jiathis分享插件应用

博主原创:未经博主允许,不得转载 在上一篇的博文中分享了如何用百度分享插件实现分享功能,现在展示用jiathis进行实现分享功能: 主要代码如下: <body> <div class="jiathis_style_32x32"> <a class="jiathis_button_qzone"></a> <a class="jiathis_button_tsina"></a>

iShare.js分享插件

iShare.js是一个小巧的分享插件,纯JS编写,不依赖任何第三方库,使用简便.为啥写这个插件? 因为在搭建个人blog时(还没有搭建好(¯﹃¯)),对目前国内比较受欢迎的分享插件都不太满意,主要如下几点: 不太喜欢官方提供的样式,想重新定制,但又不太方便 提供的大部分接口都没用到,真正用到就那么几个,显得有点冗余 没有进行更新维护,部分接口都是挂掉 另外,工作中,有时想要一个可以自定义样式.支持常用的分享接口.使用方便.不依赖于第三库的独立库.比如写活动页面时(⊙﹏⊙) 基于上述原因自己就创

自己动手写js分享插件 [支持https] (可以分享QQ空间,微信,新浪微博。。。)

由于百度分享,jiathis 等分享插件在https下均会报错,就萌生了自己动手写一个分享插件的念头,其实实现起来一点都不难,以下代码都已在https网站运行通过,特附上以下代码:还请各位看官不吝赐教: 附上演示效果网址:https://www.aishandian.com/jiekuan_zhishi-979.html 动画实现效果代码 $(document).on("click", ".msb_main", function() { if($(this).has

实现分享功能插件一---百度分享插件应用

博主原创:未经博主允许,不得转载 在做项目的时候,碰到实现分享的功能,在网上搜了很多的资料,实现分享主要有两种插件. 一种插件是百度分享的插件,另一种是jiathis进行实现分享. 先展示用百度分享插件如何实现,具体代码如下,其实现的功能为实现视频分享,并带视频图片: <body> <div class="bdsharebuttonbox" data-tag="share_1"> <a class="bds_weixin&qu

百度分享插件使用 ------将页面分享到各类主流社交软件

分享插件 <div class="bdsharebuttonbox" data-tag="share_1"> <a class="bds_mshare" data-cmd="mshare"></a> <a class="bds_qzone" data-cmd="qzone" href="#"></a> <

Addthis分享插件后url乱码的解决办法

Addthis分享插件安装后,有时候URL后面会出现类似#.VB4mxhbjtnQ的一串乱码的乱码,作用是用来追踪客户客户,但是给客户的印象会以为木马中毒之类的 http://localhost/michael-kors-selma-logo-medium-pink-totes-p-8.html#.VB4mxhbjtnQ 解决方法 将插件js代码 var addthis_config = {"data_track_addressbar":true}; 删除或者改为 var addthi