<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>飞鱼 ^_^ 浆抱罗斯‘s blog &#187; bind</title>
	<atom:link href="http://qilei.org/tag/bind/feed/" rel="self" type="application/rss+xml" />
	<link>http://qilei.org</link>
	<description>这里是一个非专业交互设计师 - 飞鱼 的blog。飞鱼的生活就像吃一盘螺丝, 你得努力吸才能品尝到快乐^_^</description>
	<lastBuildDate>Mon, 09 Apr 2012 07:01:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>隔山打牛 &#8211; jQuery中 trigger() &amp; bind() 使用心得 (二)</title>
		<link>http://qilei.org/201003/using-trigger-bind-function-in-jquery-2/</link>
		<comments>http://qilei.org/201003/using-trigger-bind-function-in-jquery-2/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 17:49:44 +0000</pubDate>
		<dc:creator>飞鱼</dc:creator>
				<category><![CDATA[代码浅谈]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.qilei.org/?p=764</guid>
		<description><![CDATA[上一篇说的trigger()触发事件的解释，因为写着写着 发现有点长，所以就拆成2篇，多牛逼~~~ 咩哈哈·~~ 这篇我介绍一下 trigger() &#038; bind() 配合使用 的 隔山打牛招式，真的是隔山打牛，不是观音坐莲，表想歪。=，= bind() 绑定事件 if 你看过jquery里bind 绑定事件的解释，那基本不用看这篇文章了。 return false else go on 称为绑定事件，字面意思应该是 绑定在其他事件上的事件。 $(function() { var div = $("#mybutton"); //你的按钮。 div.click(function(e,text) { var text = text &#124;&#124; '你是猪啊，~让你点，你就点？'; alert(text); }); div.bind('click', function() { alert("兄弟，没事不要乱点; "); }); }); 上面的代码就是给div的click事件绑定了一个事件。猜猜看哪个先执行？ 当按钮被点击的时候，先执行完click事件后，再执行绑定的事件。 bind() 绑定 自定义事件 说绑定自定义事件的时候先说一下 什么是自定义事件？ trigger()方法是用来触发一些事件型方法，如： div.trigger('click', [...]]]></description>
			<content:encoded><![CDATA[<p>上一篇说的trigger()触发事件的解释，因为写着写着 发现有点长，所以就拆成2篇，多牛逼~~~ 咩哈哈·~~<br />
这篇我介绍一下 trigger() &#038; bind() 配合使用 的 <strong>隔山打牛</strong>招式，<em>真的是隔山打牛，不是观音坐莲，表想歪。=，=</em></p>
<h3>bind() 绑定事件 </h3>
<p>if 你看过jquery里bind 绑定事件的解释，那基本不用看这篇文章了。 return false<br />
else go on</p>
<p>称为绑定事件，字面意思应该是 绑定在其他事件上的事件。</p>
<pre><code>$(function() {
	var div = $("#mybutton"); //你的按钮。
	div.click(function(e,text) {
		var text = text || '你是猪啊，~让你点，你就点？';
		alert(text);
	});

        div.bind('click', function() {
            alert("兄弟，没事不要乱点; ");
        });
});
</code></pre>
<p>上面的代码就是给div的click事件绑定了一个事件。<em>猜猜看哪个先执行？</em><br />
当按钮被点击的时候，先执行完click事件后，再执行绑定的事件。</p>
<h3>bind() 绑定 自定义事件 </h3>
<p>说绑定自定义事件的时候先说一下 <em>什么是自定义事件？</em><br />
trigger()方法是用来触发一些事件型方法，如：</p>
<pre><code>div.trigger('click', [text]);</code></pre>
<p>上面的click 是不是一定要规定的 click，focus等事件型方法嘞？答案是可以触发任何事件。如：</p>
<pre><code>div.trigger('my_action', [text]);</code></pre>
<p>你可以尝试一下，发现firebug 没有报错，说明没有问题，只是这个my_action 事件什么都没做而已。<em>为什么不报错，这个我还在研究，谁知道的告诉我 -，-</em><br />
从这一点看trigger 方法一定是在找 my_action 事件。突然有个idea，既然bind 是绑定事件，既然 my_action 事件什么事情都没做，那我就给它bind 绑定个事件上去不就可以了。于是乎····竟然可以~~<br />
<span id="more-764"></span></p>
<pre><code>$(function() {
	var div = $("#mybutton"); //你的按钮。
	div.bind('my_action', function(e, text) {
            var text = text || ' oh yah, 观 音 坐 莲';
            alert(text);
        });
	div.trigger('my_action');
}); </code></pre>
<h3>隔山打牛 </h3>
<p>那么何为隔山打牛呢？<br />
听我慢慢银荡过来~~~<br />
比如我们有两个盒子，希望点击按钮让  第二个盒子显示第一个盒子里的内容。<br />
平常我们会这样写：</p>
<pre><code>$(function() {
	var div = $("#mybutton"); //你的按钮。
	var box1= $("#mybox1");
	var box2= $("#mybox2");
	div.click(function() {
             var text = box2.val();
             box1.val(text);
        });
}); </code></pre>
<p>利用bind 和 trigger 我们可以这样写。</p>
<pre><code>$(function() {
	var div = $("#mybutton"); //你的按钮。
	var box1= $("#mybox1");
	var box2= $("#mybox2");

	div.bind('my_action', function(e, text) {
             var text = box1.val();
             box2.val(text);
        });

	div.click(function() {
	    $(this).trigger('my_action');
        });

}); </code></pre>
<p>这样写的好处，在以后会慢慢体现，比如你想双击的时候也想 有这样的动作的时候 ：只需要在后面加：</p>
<pre><code>	div.dblclick(function() {
	    $(this).trigger('my_action');
        });</code></pre>
<p>甚至你想在点击后想把第一个盒子消失，只需要在后面再加上</p>
<pre><code>	div.bind('my_action', function(e, text) {
             box1.hide();
        });</code></pre>
<p>这样的好处是，当click事件要处理的事情变多的时候，能将处理的事情进行分类，让代码更加有层次。而不是臃肿的click function。<br />
更神奇的是这样写 bind 事件甚至可以分开存在不同的js 文件 在需要的时候调用，让它变成一个组件形式。<br />
是不是有一种隔山打牛的感觉？</p>
<h2  class="related_post_title">您可能还对这些日志感兴趣</h2><ul class="related_post"><li><a href="http://qilei.org/201105/the-closure-alike-javascript-platform/" title="闭包式 js架构 前端书写心得(上)">闭包式 js架构 前端书写心得(上)</a></li><li><a href="http://qilei.org/201101/ternary-tip-for-javascript/" title=" 三元运算符 使用小技巧一则 &#8211; javascript"> 三元运算符 使用小技巧一则 &#8211; javascript</a></li><li><a href="http://qilei.org/201009/jquery-plugin-of-lazyhover/" title="神经特长 &#8211; lazy hover  延迟激活jquery 插件">神经特长 &#8211; lazy hover  延迟激活jquery 插件</a></li><li><a href="http://qilei.org/201005/how-to-make-the-func-name-no-clrash/" title="系统级应用项目中的函数命名冲突问题">系统级应用项目中的函数命名冲突问题</a></li><li><a href="http://qilei.org/201004/jquery-pad/" title="走马观花 &#8211; jQuery调试工具- jQuery pad">走马观花 &#8211; jQuery调试工具- jQuery pad</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://qilei.org/201003/using-trigger-bind-function-in-jquery-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

