隔山打牛 – jQuery中 trigger() & bind() 使用心得 (二)

上一篇说的trigger()触发事件的解释,因为写着写着 发现有点长,所以就拆成2篇,多牛逼~~~ 咩哈哈·~~
这篇我介绍一下 trigger() & bind() 配合使用 的 隔山打牛招式,真的是隔山打牛,不是观音坐莲,表想歪。=,=

bind() 绑定事件

if 你看过jquery里bind 绑定事件的解释,那基本不用看这篇文章了。 return false
else go on

称为绑定事件,字面意思应该是 绑定在其他事件上的事件。

$(function() {
	var div = $("#mybutton"); //你的按钮。
	div.click(function(e,text) {
		var text = text || '你是猪啊,~让你点,你就点?';
		alert(text);
	});

        div.bind('click', function() {
            alert("兄弟,没事不要乱点; ");
        });
});

上面的代码就是给div的click事件绑定了一个事件。猜猜看哪个先执行?
当按钮被点击的时候,先执行完click事件后,再执行绑定的事件。

bind() 绑定 自定义事件

说绑定自定义事件的时候先说一下 什么是自定义事件?
trigger()方法是用来触发一些事件型方法,如:

div.trigger('click', [text]);

上面的click 是不是一定要规定的 click,focus等事件型方法嘞?答案是可以触发任何事件。如:

div.trigger('my_action', [text]);

你可以尝试一下,发现firebug 没有报错,说明没有问题,只是这个my_action 事件什么都没做而已。为什么不报错,这个我还在研究,谁知道的告诉我 -,-
从这一点看trigger 方法一定是在找 my_action 事件。突然有个idea,既然bind 是绑定事件,既然 my_action 事件什么事情都没做,那我就给它bind 绑定个事件上去不就可以了。于是乎····竟然可以~~

$(function() {
	var div = $("#mybutton"); //你的按钮。
	div.bind('my_action', function(e, text) {
            var text = text || ' oh yah, 观 音 坐 莲';
            alert(text);
        });
	div.trigger('my_action');
}); 

隔山打牛

那么何为隔山打牛呢?
听我慢慢银荡过来~~~
比如我们有两个盒子,希望点击按钮让 第二个盒子显示第一个盒子里的内容。
平常我们会这样写:

$(function() {
	var div = $("#mybutton"); //你的按钮。
	var box1= $("#mybox1");
	var box2= $("#mybox2");
	div.click(function() {
             var text = box2.val();
             box1.val(text);
        });
}); 

利用bind 和 trigger 我们可以这样写。

$(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');
        });

}); 

这样写的好处,在以后会慢慢体现,比如你想双击的时候也想 有这样的动作的时候 :只需要在后面加:

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

甚至你想在点击后想把第一个盒子消失,只需要在后面再加上

	div.bind('my_action', function(e, text) {
             box1.hide();
        });

这样的好处是,当click事件要处理的事情变多的时候,能将处理的事情进行分类,让代码更加有层次。而不是臃肿的click function。
更神奇的是这样写 bind 事件甚至可以分开存在不同的js 文件 在需要的时候调用,让它变成一个组件形式。
是不是有一种隔山打牛的感觉?

哟?不错哎 订阅飞鱼的RSS Feeds 回去慢慢看^_^

您可能还对这些日志感兴趣

该文章已经被摸了1,837次。 共有 5 条评论

  1. 1. 葉子 2010年3月9日 at 9:51

    玉米又回去了,快换吧

    回复

  2. 2. jack 2010年4月20日 at 19:11

    哥,喜欢你的这么淫乱的方式,来讲这么枯燥的技术问题,受教了

    回复

  3. 3. popo 2010年6月12日 at 11:53

    那个隔山打牛是真的不知道jQuery的bind还能这么用,思维禁锢了!受教了

    回复

  4. 4. Yang 2010年6月23日 at 3:11

    一朋友刚用这个办法实现了WP的双击留言启动引用回复..

    回复

    飞鱼 Reply:

    bingo 这东西是个好肉~

    回复

发表评论

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签

Who am I ?

飞鱼,男,浙江人士。
非专业前端、交互设计师。
目前在 企鹅村 通宵 打酱油

最新在啃

php和mysql web开发(原书第4版) javascript

新鲜的肉

最新评论

  • 小元: 啊!我会弄了!
  • 小元: 请问多窗口并显怎么设置?看了文章还是不会呢! “打开html页面,点击多窗口panel,然后从左侧目录中将css文件拖动到右侧panel就可以实现了。”...
  • vilppu: http://foxsp.com/t/125 这有下载,也有安装说明
  • James: 请问能否分享配色方案?
  • Aric: 代码快 来一份 谢谢楼主了 新年快乐

订阅-rss-永久链接

MT
备案号:浙ICP备09020026 号