老汉推车 – jQuery中 trigger() & bind() 使用心得 (一)

日期 : 2010年3月6日 0:03 am 标签 : - 代码浅谈 - - 评论 : 11 feet 日历 : 6 Mar 2010

年前一个项目做下来,全程js 交互写了我半辈子的js代码,重构了N便~~ 不过做项目这东西很锻炼人,强迫你去接触一些没有接触过的东西,收获还是蛮大的。其中收获最大的还是对jQuery 的全新认识了,之前接触jquery一直都是表现类的,如show,hide,hover,等方法,这次项目,接触了许多事件类代码。

trigger() 触发事件

这个方法是jQuery 1.3中新增的一个引起触发事件的函数。具体解释可以去这里下载 最新的jquery 手册查一下,里面解释的很清楚,就是字有点多。
如果你比较懒那么我稍微解释一下这个东东。我也是挂羊头卖狗肉 =,=
触发事件就是 类似于点击click, mouseover, keydown 等有动作的js事件,简单的说就是一个动作,可能有人会问,那show, hide 是不是? 不是,show 这 效果,手册里刚打开的速查页面里的事件类目就是上面所说的触发事件
说了这么多,还没切到主题,=,=我就这样 ,容易跑题,大伙看习惯了就好。

为什么要用 trigger() ?

比如:你给一个按钮添加了一个click点击事件,弹出提示框,代码如下。

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

上面的代码就是一个按钮的click事件。这个时候你有个非分的要求,就是希望页面刷新的时候就点一下这个按钮。如果不用trigger()你可以在后面这样写:

div.click();

如果用trigger(),你就要写成这样:效果跟上面这句是一样,就是稍微长点。

div.trigger("click");

然后有人说:你是猪啊·~~ 上面这个短一点,你还教我用下面这个 =,=
表急着揍我么~· 继续往下看。

你用手册 里的索引搜一下click 可以看到 两条 结果 click() 和,click(fn),然后 搜一下trigger 发现只有一个 trigger(type, [data]) 。
然后你知道我的意思了吧。— trigger 可以传参数进去。
我们看看 手册里的trigger 例子:

$("p").click( function (event, a, b) {
  // 一个普通的点击事件时,a和b是undefined类型
  // 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]);

了解了吧?如果用click 的话,它不吃参数,用trigger的话,就能吃了。
练习一下吧:黏贴到你的页面上试试看,记得把jquery载进来。

$(function() {
	var div = $("#mybutton"); //你的按钮。
	div.click(function(e,text) {
		var text = text || '你是猪啊,~让你点,你就点?';
		alert(text);
	});
	div.trigger("click","您好,请点击按钮");
});
哟?不错哎 订阅飞鱼的RSS Feeds 回去慢慢看^_^

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

该文章已经被摸了2,512次。 共有 11 条评论

  1. 1. Bee君 2010年3月6日 at 14:59

    技术内涵文…= =

    回复

    飞鱼 Reply:

    oh yah 偶尔瞎掰一下

    回复

  2. 2. 二十六公斤 2010年3月12日 at 4:40

    老汉推车··我想错了· ·

    回复

    飞鱼 Reply:

    你比较 诚实 !~~ ^__^

    回复

  3. 3. 小飞鱼 2010年7月2日 at 10:58

    好啊!

    回复

    飞鱼 Reply:

    啊~~~ 不带你这样的·~~

    回复

  4. 4. ADD~`` 2011年3月2日 at 17:37

    话说..如果我想用trigger模拟一个超链接的点击..且想在页面加载的时候能打开那个超链接- -要怎么搞..琢磨了一下午..没头绪..

    回复

    飞鱼 Reply:

    $(‘#id’).trigger(“click”); // #id 你要点的链接的id
    不过这个行为不是很正规。因为 正常来讲不应该主动触发 点击行为。哈
    试想 这样的话 可以在用户打开页面的时候就猛点广告 = =
    但我没试过··· 就是YY 过

    回复

    飞鱼 Reply:

    好吧 浏览器很聪明 自动拦截了··

    回复

    ADD~`` Reply:

    话说是的.据史料记载..虽然触发了click事件..但是没响应..我表示- -闹心..很严重的那种..

    回复

    飞鱼 Reply:

    啊 哈哈 分析 自己想要做的 然后想想有没有其他解决办法

    回复

发表评论

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