作者:手机用户2502878095 | 来源:互联网 | 2023-08-07 16:24
前言因为博皮当前版本有人反馈文章中标题导航点击无法生成;jquery-click-invalid:https:codesandbox.iosjquery-click-invalid
前言 因为博皮当前版本有人反馈文章中标题导航点击无法生成;
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 ' ' + 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) $(' ').prependTo(titleInfo[i]) }else{ i--; } }) } })();