`
JavaSam
  • 浏览: 951837 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery 画线绑定元素关系(项目中为客户之间的关系)

 
阅读更多

                                     只是初步demo,仅供学习,事件机制可以自己研究加入

 

 

html

   

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />

		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
		<title>line</title>
		<meta name="description" content="" />
		<meta name="author" content="Administrator" />
		<meta name="viewport" content="width=device-width; initial-scale=1.0" />
		<link rel="shortcut icon" href="/favicon.ico" />
		<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
		
		<link rel="stylesheet" type="text/css" href="CSS/line.css" />
		<!--[if IE]><script type="text/javascript" src="JS/excanvas.js"></script><![endif]-->
		<script src="JS/jquery-1.8.2.js"></script>
	</head>

	<body>
		<div style="float: left;width: 1px;">
		<canvas id="canvas" width="400" height="300">
			Your browser doesn't support the HTML5 element canvas.
		</canvas>
		</div>
		<div id="left">
			<ul>
				<li>节点一</li>
				<li>节点一</li>
			</ul>
		</div>
        <div id="right">
			<ul>
				<li>节点二</li>
				<li>节点二</li>
			</ul>
		</div>
        <script src="JS/jquery.line.js"></script>
	</body>
</html>

 

js
   
/**
 * @author wsf
 */
(function(win,$) {
	var jl  = {};
	win.jl = jl;
	//默认属性
	var _defaults = {
		 cwidth : 400,
		 cheight : 300,
		 ctx:null,
		 everything : [],
		 curwall:null,
		 wallwidth : 5,
		 wallstyle : "lightblue",
		 walls : [],
		 inmotion : false,
		 unit : 10
	};
	/**
	 * 开始画画
	 */
	jl.startWall = function(e) {
		var mx = e.pageX-this.offsetLeft,my = e.pageY-this.offsetTop;
		var opts = jl.options;
	    opts.curwall = new jl.wall(mx, my, mx + 1, my + 1, opts.wallwidth, opts.wallstyle);
	    opts.inmotion = true;
	    opts.everything.push(opts.curwall);
	    jl.drawall();
	};
	/**
	 * 画画
	 */
	jl.stretchwall = function(e) {
	   var opts = jl.options;
	   if (opts.inmotion) {
	        var mx = e.pageX-this.offsetLeft,my = e.pageY-this.offsetTop;
	        var my;
	        opts.curwall.fx = mx;
	        opts.curwall.fy = my;
	        jl.drawall();
	    }
	}
	/**
	 * 结束画画
	 */
	jl.finish = function(e) {
		var opts = jl.options;
		opts.inmotion = false;
        opts.walls.push(opts.curwall);
	}
	/**
	 * 画的样式
	 */
	jl.wall = function(sx, sy, fx, fy, width, stylestring){
	    this.sx = sx;
	    this.sy = sy;
	    this.fx = fx;
	    this.fy = fy;
	    this.width = width;
	    this.draw = jl.drawAline;
	    this.strokestyle = stylestring;
	}
   /**
    * 不止画线,还可以扩展
    */
   jl.drawall = function(){
   	    var opts = jl.options;
	    opts.ctx.clearRect(0, 0, opts.cwidth, opts.cheight);
	    var i;
	    for (i = 0; i < opts.everything.length; i++) {
	        opts.everything[i].draw();
	    }
	}
	/**
	 * 画线
	 */
	jl.drawAline = function(){
		var ctx = jl.options.ctx;
	    ctx.lineWidth = this.width;
	    ctx.strokeStyle = this.strokestyle;
	    ctx.beginPath();
	    ctx.moveTo(this.sx, this.sy);
	    ctx.lineTo(this.fx, this.fy);
	    ctx.stroke();
	}
	/**
	 * 初始化
	 */
	jl.init=function(settings) {
		jl.options = $.extend({},_defaults,settings);//加入自定义属性
		var srcEle = $(settings.canvasId);//element
		jl.options.ctx = srcEle[0].getContext('2d');
		var _method = {
			'mousedown':jl.startWall,
			'mousemove':jl.stretchwall,
			'mouseup':jl.finish
		}
		for(var ename in _method){
			srcEle.bind(ename,_method[ename]);
		}
		jl.drawall();
	};
	
	jl.init({"canvasId":"canvas"});
})(window,jQuery);
 css
#canvas{
	background-color: #fff;
}
#left{
	border:4px solid #ccc;
	border-right:none;
	height: 300px;
	width:200px;
	float: left;
}
#right{
	border:4px solid #ccc;
	border-left:none;
	height: 300px;
	width: 200px;
	float: left;
}
#left li{
	list-style:hiragana;
	font-size:14px;
}
#right li{
	list-style:cjk-ideographic;
	font-size: 14px;
}

tips:css中有诀窍,自己研究吧
分享到:
评论

相关推荐

    Jquery数据绑定分页源码

    通过阅读这两个文件,你可以更深入地理解如何在jQuery项目中实现数据绑定和分页功能,以及如何根据实际需求对其进行调整和扩展。 总的来说,掌握jQuery数据绑定分页源码对于提升前端开发能力,特别是处理大数据集和...

    JQuery 给元素绑定click事件多次执行的解决方法

    原绑定方法: $("#sdfsd").on("click",function(e){ ***** }); 这种方法只会在原click方法中继续添加新方法; 解决办法更改绑定方法为: $("#sdfsd").unbind(...在绑定新click方法前对元素所绑定的click方法解绑

    浅谈Jquery为元素绑定事件

    在Jquery中为元素绑定事件时,需要区分对待静态和动态内容。对于静态元素,可以使用bind()方法,但对于动态生成的元素,建议使用on()方法,并将其绑定在非动态生成的父节点上。通过这种方式,无论元素何时添加到DOM...

    JQuery绑定事件

    **jQuery绑定事件**是JavaScript库jQuery中的核心功能之一,它极大地简化了DOM元素事件处理的流程,使得开发者能够更加高效地编写代码。在JavaScript原生语法中,为元素添加事件监听器通常涉及到`addEventListener`...

    Jquery为单选框checkbox绑定单击click事件

    为了更加灵活地处理多个单选框元素,我们通常不会为每个单选框都写一遍绑定代码,而是利用Jquery强大的选择器和遍历功能。示例中的代码`$(".imagezz").click($test_image_check_box_click);`通过` $(".imagezz")`...

    jQuery给动态添加的元素绑定事件的方法

    本文实例讲述了jQuery给动态添加的元素绑定事件的方法。分享给大家供大家参考。具体分析如下: jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要...

    jQuery输入框提示绑定车牌所属省份代码

    本项目是基于jQuery实现的一个特定功能,即"jQuery输入框提示绑定车牌所属省份代码",旨在提升用户输入车牌号码时的体验。 首先,我们需要理解这个功能的核心需求:当用户在输入框中输入车牌号码的首字母时,系统...

    jQuery实现获取绑定自定义事件元素的方法

    本文将详细讲解如何使用jQuery实现获取绑定自定义事件元素的方法,以及涉及到的事件绑定和元素操作技巧。 首先,我们要理解jQuery的事件绑定机制。`$.fn.bind`是jQuery用于绑定事件处理函数的核心方法。默认情况下...

    JQuery调用绑定click事件的3种写法

    `.bind()`是jQuery中更通用的事件绑定方法,不仅可以绑定`click`事件,还可以绑定其他多种事件,如`mouseover`、`mouseout`等。下面是如何使用`.bind()`绑定`click`事件的例子: ```javascript $('#clickmebind')....

    d3+jQuery类型关系图谱

    在学习和使用这个"关系图谱代码"时,你需要熟悉d3.js的基本语法,理解如何创建数据绑定、定义图形元素和设置交互行为。同时,对jQuery的掌握也很重要,以便利用其简化DOM操作和事件处理。如果你计划自定义图谱,还...

    jQuery快捷键绑定插件jquery-shortcuts.zip

    jQuery Shortcuts 是个超轻量级的方法,使用 jQuery 来绑定快捷键(热键)。 标签:jquery

    jquery事件绑定例子

    通过查看并运行这些例子,你可以更直观地理解jQuery事件绑定的工作原理,并学习如何将它们应用到自己的项目中。 总结来说,jQuery的事件绑定功能是其强大功能的一部分,它使开发者能够轻松响应用户交互,提供更加...

    JQuery实现动态绑定和二级联动

    二级联动是指两个或多个下拉列表之间存在依赖关系,当一个列表的选择改变时,另一个列表会相应地更新其选项。在地址选择中,通常先选择省份,然后根据省份选择城市。实现这种联动效果,我们首先需要建立一个数据模型...

    对jQuery的事件绑定的一些思考(补充)

    然而,正如标题和描述所指出的,jQuery的事件绑定有时也会带来一些问题,比如内存消耗过大、动态生成元素需要重新绑定事件以及语法冗余。本文将深入探讨这些问题,并提供相应的解决方案。 首先,让我们看看jQuery中...

    jquery项目

    《jQuery项目深度解析》 jQuery,作为一款广泛应用于前端开发的JavaScript库,以其简洁的API、强大的功能和广泛的浏览器兼容性赢得了开发者们的喜爱。在这个名为“jquery项目”的压缩包中,我们聚焦于jQuery的核心...

    jQuery双向数据绑定插件way.js

    way.js是一个简单的,轻量级的,持续的,framework-agnostic JavaScript库,允许您将DOM元素绑定到一个内存数据中存储。浏览器要求ie9以上版本,演示地址:http://www.jq22.com/jquery-info546

    jQuery为动态生成的select元素添加事件的方法

    在处理动态生成的元素时,jQuery提供了强大的选择器和方法,这使得开发者能够以简洁的方式操作这些元素,包括为它们添加事件监听器。 2. 动态生成元素的事件处理难题:在Web开发中,经常遇到需要动态生成页面元素的...

    jquery使用bind绑定事件

    `bind()`方法是jQuery提供的一种事件绑定功能,它可以将一个或多个事件处理器函数绑定到选择器匹配的元素上。当指定的事件发生时,这些函数将会被调用。`bind()`的基本语法如下: ```javascript $(selector).bind...

    JQuery给元素绑定click事件多次执行的解决方法

    在这个例子中,`#sdfsd`是一个元素的选择器,`on`是jQuery中的事件绑定方法,用于监听并响应指定的事件。每次执行这段代码时,一个新的事件处理函数会被添加到元素的`click`事件列表中。如果这段代码在页面加载、...

    一个jQuery插件用于数据绑定的HTMLRender模板引擎

    HTMLRender是一款基于jQuery的数据绑定模板引擎,主要用于帮助开发者在JavaScript中高效地进行DOM操作和数据渲染。这款插件是jQuery的一个扩展,它提供了一种简洁的语法来将数据与HTML结构进行绑定,使得动态生成和...

Global site tag (gtag.js) - Google Analytics