当前位置:  开发笔记 > 编程语言 > 正文

是否有任何不引人注目的方式来挂钩触发器的jQuery方法?

如何解决《是否有任何不引人注目的方式来挂钩触发器的jQuery方法?》经验,为你挑选了1个好方法。

我想知道是否有任何不引人注目的方式来挂钩诸如attr,data,css等方法并调用自定义触发器?

理想情况下,我可以这样做:

$(".friend a").bind("attr.changed", changed /* data */, function(e) {
    alert("The " + changed.attribute + " attribute changed from " + changed.from + " to " + changed.to + "!");
});

$(".friend").append(
  $("").
    attr("href", "#").
    html("Friend 1").
    click(function() { alert('I was clicked!'); }); // creates the element, doesn't execute since element didn't exist

$(".friends a").each(function() {
  var $this = $(this);
  $this.attr("rel", "friend"); // triggers "attr.changed"
});

理想情况下,这将能够在任何元素上触发,并将attr更改,从一个对象传递到每个jQuery方法内部的触发器调用.



1> David..:

编写"钩子"函数非常简单:

function hook(original, wrapper) {
    return function() {
        wrapper.apply(this, arguments);
        return original.apply(this, arguments);
    }
}

wrapper您提供的功能将与相同的参数调用original函数,原函数本身调用之前.

使用示例:

$.fn.attr = hook($.fn.attr, function(attribute, value) {
    alert('attribute: '+attribute+', value: '+value);
});
$('a.pie').attr('href', 'http://blueberry.pie');
// An alert says "attribute: href, value: http://blueberry.pie"

(旁注:让你wrapper取消对该original功能的调用是一个简单的扩展,但这比你想要的更有用.)

您可以直接使用它来执行您想要的操作,也可以使该wrapper函数触发您以标准jquery方式监听的自定义jquery事件.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有