国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - jQuery截取字符串長(zhǎng)度的插件,遇到不能正確獲取元素內(nèi)text()的問(wèn)題

瀏覽:141日期:2023-05-01 09:49:01

問(wèn)題描述

做了個(gè)截取字符串長(zhǎng)度的插件,當(dāng)字符超過(guò)指定個(gè)數(shù)后截取字符,并鼠標(biāo)跟隨顯示完整的內(nèi)容提示。單獨(dú)寫(xiě)功能的時(shí)候是可以實(shí)現(xiàn)的,但用下面的方式做成插件后,發(fā)現(xiàn)鼠標(biāo)跟隨的內(nèi)容都是最后一條的,而且不管字符有沒(méi)有超過(guò)都會(huì)顯示最后一條的內(nèi)容,因?yàn)橛胁糠謨?nèi)容時(shí)動(dòng)態(tài)加載的,所以用了事件委托的方式。

(function($, window, document, undefined) { // 創(chuàng)造一個(gè)公共變量來(lái)構(gòu)建一個(gè)私有方法 var privateFunction = function() {} var methods = {// 字符截取,鼠標(biāo)觸發(fā)跟隨詳情提示框subString: function (options) { return this.each(function(index) {var $this = $(this);var defaults = { el: ’’, // 目標(biāo)元素 charNum: 22, // 截取字符個(gè)數(shù) hasDot: true, // 是否顯示省略號(hào) // dotColor: ’#666’ // 省略號(hào)顏色 allTextp: ’#allText’, // 鼠標(biāo)跟隨完整文本框的p isPrompt: true // 是否顯示提示框};var settings = $.extend({}, defaults, options), allTextp = settings.allTextp.replace(/[#|.]/g, ’’), strText = $(settings.el).eq(index).text(), chineseRegex = /[^x00-xff]/g, strLength = strText.replace(chineseRegex, ’**’).length, newLength = 0, newStr = ’’, singleChar = ’’;function _subString(str, len, hasDot) { for (var i = 0; i < strLength; i++) {singleChar = str.charAt(i).toString();singleChar.match(chineseRegex) != null ? newLength += 2 : newLength++;if (newLength > len) break;newStr += singleChar; } if (hasDot && strLength > len) newStr += ’...’; return newStr;}// 截取字符串$this.html(_subString(strText, settings.charNum, settings.hasDot));// 鼠標(biāo)跟隨是否顯示完整文本框if ( (strLength > settings.charNum) && settings.isPrompt ) { $(document).on(’mouseover’, settings.el, function(event) {if ( settings.allTextp.indexOf(’#’) != -1 ) $(’body’).append(’<p />’);if ( settings.allTextp.indexOf(’.’) != -1 ) $(’body’).append(’<p />’); }); $(document).on(’mousemove’, settings.el, function(event) {$(settings.allTextp).text(strText).show().css({ left: event.pageX + 30, top: event.pageY}); }); $(document).on(’mouseout’, settings.el, function(event) {$(settings.allTextp).remove(); }); // $this.mouseover(function() { // if ( settings.allTextp.indexOf(’#’) != -1 ) $(’body’).append(’<p />’); // if ( settings.allTextp.indexOf(’.’) != -1 ) $(’body’).append(’<p />’); // }); // $this.mousemove(function(event) { // $(settings.allTextp).text(strText).show().css({ // left: event.pageX + 30, // top: event.pageY // }); // }); // $this.mouseout(function() { // $(settings.allTextp).remove(); // });} });}}; $.fn.inCommonUseJsPlugin = function() {var method = arguments[0];if(methods[method]) { method = methods[method]; arguments = Array.prototype.slice.call(arguments, 1);} else/* if( typeof(method) == ’object’ || !method ) { method = methods.init;} else */{ $.error( ’Method ’ + method + ’ does not exist on jQuery.pluginName’ ); return this;}return method.apply(this, arguments); }})(jQuery, window, document);

問(wèn)題解答

回答1:

上班時(shí)間腦子漿糊了,回家重新寫(xiě)了一遍,已經(jīng)解決了,換個(gè)思路問(wèn)題就簡(jiǎn)單很多了!

/** * * @authors xxy * @date 2017-06-26 19:19:42 * @url http://www.hifrontend.com */(function($, window, document, undefined) { var methods = {// 字符截取,鼠標(biāo)觸發(fā)跟隨詳情提示框subString: function (options) { var $this = $(this); var defaults = {el: ’li’, // 目標(biāo)元素charNum: 22, // 截取字符個(gè)數(shù)hasDot: true, // 是否顯示省略號(hào)// dotColor: ’#666’ // 省略號(hào)顏色allTextp: ’#allText’, // 鼠標(biāo)跟隨完整文本框的pisPrompt: true // 是否顯示提示框 }; var settings = $.extend({}, defaults, options); function _subString(str, len, hasDot) {var newLength = 0;var newStr = '';var chineseRegex = /[^x00-xff]/g; // 提取中文漢字var singleChar = '';var strLength = str.replace(chineseRegex, '**').length; // 將中文替換成 ** 并計(jì)算長(zhǎng)度f(wàn)or (var i = 0; i < strLength; i++) { singleChar = str.charAt(i).toString(); (singleChar.match(chineseRegex) != null) ? newLength += 2 : newLength++; if (newLength > len) break; newStr += singleChar;}if (hasDot && strLength > len) newStr += '...';return newStr; } $(settings.el).each(function() {var text = $(this).text();$(this).attr(’data-text’, text); $(this).html(_subString(text, settings.charNum, settings.isPrompt)); }); // 鼠標(biāo)跟隨是否顯示完整文本框 $(document).on(’mouseover’, settings.el, function() {var allTextLen = $(this).attr(’data-text’).replace(/[^x00-xff]/g, '**').length;if ( allTextLen > settings.charNum ) { var allTextp = settings.allTextp.replace(/[#|.]/g, ’’) if ( settings.allTextp.indexOf(’#’) != -1 ) $(’body’).append(’<p />’); if ( settings.allTextp.indexOf(’.’) != -1 ) $(’body’).append(’<p />’);} }); $(document).on(’mousemove’, settings.el, function(event) {$(settings.allTextp).text( $(this).attr(’data-text’) ).show().css({ left: event.pageX + 30, top: event.pageY}); }); $(document).on(’mouseout’, settings.el, function() {$(settings.allTextp).remove() }); return this;} }; $.fn.inCommonUseJsPlugin = function() {var method = arguments[0];if(methods[method]) { method = methods[method]; arguments = Array.prototype.slice.call(arguments, 1);} else { $.error( ’Method ’ + method + ’ does not exist on jQuery.pluginName’ ); return this;}return method.apply(this, arguments); }})(jQuery, window, document);回答2:

var settings = $.extend({}, defaults, options), allTextp = settings.allTextp.replace(/[#|.]/g, ’’), strText = $(settings.el).eq(index).text(), chineseRegex = /[^x00-xff]/g, strLength = strText.replace(chineseRegex, ’**’).length, newLength = 0, newStr = ’’, singleChar = ’’;

像這種寫(xiě)法,allTextp 算局部的還是全局的?據(jù)說(shuō)某些比較老的瀏覽器會(huì)認(rèn)為是全局的。這樣的話,鼠標(biāo)跟隨內(nèi)容都是最后一條就可以解釋了。目前從代碼來(lái)看我還看不出來(lái)其它可能造成這一現(xiàn)象的問(wèn)題。

標(biāo)簽: JavaScript
主站蜘蛛池模板: 天天精品在线 | 欧美成a人片在线观看久 | 欧美亚洲视频 | 九九视频在线播放 | 午夜精品一区二区三区在线观看 | 99久久综合 | 一级女毛片 | 国产精品欧美一区二区 | 日韩美一区二区三区 | 韩国理伦一级毛片 | 久久欧美久久欧美精品 | 美女视频永久黄网站在线观看 | 日韩在线视频免费 | 日韩欧美国产视频 | 亚洲成人黄色在线观看 | 久草视频在线首页 | 免费的特黄特色大片在线观看 | 欧美激情综合亚洲一二区 | 国产精品日韩欧美 | 日本午色www高清视频 | 成人www | 久久精品视频一区 | 亚洲人成亚洲精品 | 国产午夜亚洲精品第一区 | 久久精品国产亚洲精品2020 | 国产欧美一区二区三区沐欲 | 三级毛片三级毛片 | 亚洲欧美日韩在线精品一区二区 | 国产高清视频在线 | 久久久久久久99久久久毒国产 | 国产成人亚洲综合 | 国产欧美日本 | 国产aⅴ一区二区 | 91成年人免费视频 | 99在线精品免费视频 | 亚洲精品视频免费在线观看 | 亚洲欧美精品成人久久91 | 国产欧美另类久久久品 | 国产成人微拍精品 | 亚洲人成综合网站在线 | 国产亚洲精品成人a在线 |