标签:JQuery arr titleInfo html 点击 num let 失效 click
前言
因为博皮当前版本有人反馈文章中标题导航点击无法生成;
jquery-click-invalid
: https://codesandbox.io/s/jquery-click-invalid-forked-xpt352
内容
- 一开始我以为是
svg
导致的点击事件失效,但是看来下代码结构,发现两者并不关联; - 开始觉得问题应该出现在
.html()
方法上,因为文章这块在博皮上是没做什么调整的,所以直接看博客园的blog-common.min.js
; - 通过
显示目录导航
关键字进行搜索,就发现了关键之处,JQuery动态的添加元素,导致事先绑定的click
事件失效了,因为.click
只适用于静态元素;
?> 既然问题找到了,那修复起来就很快了; 因为我们无法改变blog-commom.min.js
,所以通过改变自己博皮代码进行修复;
原来代码
通过
.html()
进行组合,这样导致button
对应的click事件失效;
/**
* 设置文章标题-iconfont
*/
(() => {
let titleInfo = $('#cnblogs_post_body').find(':header');
if (_.__config.articleContent.emoji && titleInfo.length > 0) {
// 默认字体图标库
import(/* webpackChunkName: "fonticon" */ '../../fonts/iconfont');
titleInfo.html((i, c) => {
let arr = []
let num=Math.floor((Math.random()*(160-i))+i);
if(arr.indexOf(num)==-1){
arr.push(num)
return '<span><svg class="icon" style="pointer-events: none;"> <use xlink:href="#icon-' + iconfontMap.food[num]+ '"></use></svg></span>' + c;
}else{
i--;
}
})
}
})();
修复代码
通过
.prependTo()
进行插入,不修改其他html代码;
/**
* 设置文章标题-iconfont
*/
(() => {
let titleInfo = $('#cnblogs_post_body').find(':header');
if (_.__config.articleContent.emoji && titleInfo.length > 0) {
// 默认字体图标库
import(/* webpackChunkName: "fonticon" */ '../../fonts/iconfont');
titleInfo.html((i, c) => {
let arr = []
let num=Math.floor((Math.random()*(160-i))+i);
if(arr.indexOf(num)==-1){
arr.push(num)
$('<svg class="icon"> <use xlink:href="#icon-'+ iconfontMap.food[num] +'"></use></svg>').prependTo(titleInfo[i])
}else{
i--;
}
})
}
})();
标签:JQuery,arr,titleInfo,html,点击,num,let,失效,click 来源: https://www.cnblogs.com/wangyang0210/p/16652916.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。