jQuery元素内容放大插件

 先上代码:    

/**
*此插件可以放在html文档最后面,自动绑定添加了magnifier属性的的元素。
*否者需要需要在文档加载完之后调用($.initBigShow())显示初始化。
*/
(function ($) {
	/**
	 *@attr 需要放大提示的元素添加属性
	 *@attrPrefix_event key:属性值前缀 value:放大提示事件(必须是jquery支持的事件)
	 *@position attr属性值 key:属性值前缀 value:放大提示元素,定制化的css(class)todo该名称
	 *@splitChar 属性attr的值前后缀连接符
	 */
	config = {
		attr : "magnifier", //属性,需要放大镜效果的必须加上此属性值,且值的前缀必须是attrPrefix的值
		//key:属性值前缀(属性值命名规范(前缀_后缀(后缀为展示的位置))) ,value:属性事件
		attrPrefix_event : {
			keyup : "keyup",
			mov : "mouseover",
			clk : "click"
		},
		position : {
			clkSuffix : "youStyle"
		}, //key 属性后缀  value 自定义的class样式 例如:clkSuffix:youStyle,youStyle必须是你自己定义的class样式
		splitChar : "_"
	};
	var getMagnifierElem = function (attrPrefix) {
		return $("*[" + config.attr + "^=" + attrPrefix + "]"); //获取目标对象
	};
	//返回属性后缀
	var getElemSuffix = function (attrValue) {
		var splitChar = config.splitChar;
		var spiltFlag = attrValue.indexOf(splitChar);
		if (spiltFlag > 0) {
			var spiltArr = attrValue.split(splitChar);
			return spiltArr[1];
		};
		return false;
	};
	//绑定事件
	var bindEvents = function () {
		var attrPrefix_event = config.attrPrefix_event;
		for (var prefix in attrPrefix_event) {
			var targets = getMagnifierElem(prefix);
			if (targets.length) {
				event = attrPrefix_event[prefix];
				targets.unbind(event).bind(event, function () {
					removeTipDiv();
					showText($(this));
				});
			}
		};
	};
	bindEvents(); //自动初始化
	
	$.initBigShow = function(){//显示初始化
	   bindEvents(); 
	};

	//创建放大提示元素
	var showText = function (target) {
		$("body").append("<div obj='obj' " + createCss(target) + ">" + getTargetValue(target) + "</div>");
	};

	//获取目标对象需要放大提示的文本
	var getTargetValue = function (target) {
		var value = target.val();
		var targetDomName = target.context.localName;
		switch (true) {
		case targetDomName == "div":
			value = target.text();
			break;
		}
		return value;
	};

	//删除放大提示的元素
	var removeTipDiv = function () {
		var tipObj = $("div[obj=obj]");
		tipObj && tipObj.remove();
	};
	/**
	 *创建放大提示元素的css
	 *可以再这里针对特定的元素,搞定制化的css
	 */
	var createCss = function (target) {
		var defautCss = "position:absolute;top:" + target.context.offsetTop + "px;left:" + (target.context.offsetLeft + target.context.offsetWidth) + "px;background:#fffae5;font-size:20px;";
		var cls = "style='" + defautCss + "'";

		var attrValue = target.attr(config.attr);
		var suffix = getElemSuffix(attrValue);
		var clsValue = suffix;
		if (clsValue) {
			cls = "class='" + clsValue + "'";
		};
		return cls;
	}
})(jQuery)

对代码进行简要的介绍 

1.

config 是对配置事件绑定规则的配置器。

2、

bindEvents 是整个插件的入口,对相关的元素进行事件绑定

3、

showText 是创建放大元素内容的元素的入口


示例demo

<!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 charset="UTF-8">
    <title>demo</title>
    <script type="text/javascript" src="jquery-1.8.3.js"></script>
    <script type="text/javascript" src="bigShow.js"></script>
    <script type="text/javascript">
$(function(){
  $.initBigShow()
  })
	</script>
	
</head>
<body>        
      <input magnifier="keyup" type="text" style="width:400px;height:50px" value='键盘点击触发示例'/>
    <input magnifier="mov_test2" type="text" value="鼠标移动触发示例" style="width:400px;height:50px;border:1px solid"/>
	<div magnifier="clk_test3" style="width:200px;">龙王(点击触发示例)</div>
</body>
</html>


收工


你可能感兴趣的:(jQuery元素内容放大插件)