Javascript 使用jQuery函数作为事件
我想知道是否有可能为dom操作向jQuery追加回调:Javascript 使用jQuery函数作为事件,javascript,jquery,jquery-callback,Javascript,Jquery,Jquery Callback,我想知道是否有可能为dom操作向jQuery追加回调: 附加 预编 addClass 切换类 移除类 瓦尔 正文 css 属性 html 隐藏 等 像新事件一样工作的东西 例如: $('#mydiv').bind('hide', function(){ console.debug('someone call hide function') }); //then in other js file, other function, anywhere. $('#mydiv').hide(
- 附加
- 预编
- addClass
- 切换类
- 移除类
- 瓦尔
- 正文
- css
- 属性
- html
- 隐藏
- 等
$('#mydiv').bind('hide', function(){
console.debug('someone call hide function')
});
//then in other js file, other function, anywhere.
$('#mydiv').hide();
//hide and output 'someone call hide function'
我看了和,但它只有在我为这个函数制作自己的包装器时才会起作用
也许是jQuery插件
这可以做到而不改变我所有的js调用这个插件?不是这样的:
$('#mydiv').myPluginsHide();
谢谢。我不知道任何内置的函数可以做到这一点,但您可以通过迭代
jQuery.fn
(即,您将按照Felix Kling的建议覆盖这些函数):
然后,您只需在回调
对象的相应条目中添加/删除回调
更新:不知道我在这里遗漏了什么,但无法完成工作。(编辑:啊,忘记将变量包装在闭包中的经典错误…现在应该可以了。还添加了一个
排除的列表,用于必须而不是被覆盖的函数)。您可以查看jQuery。延迟。。。我想是这样的
$(function(){
$.when($('#one').hide('slow'))
.then(function () {
$('#two').hide('slow')
})
.then(function () {
$('#three').hide('slow')
});
});
您可以使用自己的实现覆盖这些函数,即触发事件并调用原始函数。您犯的常见错误是在循环中创建闭包。对于您创建的每个函数,orig
将引用在循环中分配的最后一个值。@FelixKling lol刚刚意识到错误,并正在更新代码(原始代码使用$。每个
而不是循环)。现在应该可以了!:)谢谢,这解决了我的问题。我更喜欢@jStreamer898建议的“jquery解决方案”,比如Deferred,但除了调用method时,我不知道如何使用Deferred。$。当
使用时,比如说,$。ajax
,因为该函数返回一个Deferred
(然后
代码将在ajax请求完成时运行,而不是在启动时)。但是大多数jQuery函数都会立即执行,并且不会返回延迟,因此这种解决方案在这种情况下不起作用。啊,我现在明白了,hide
的返回值既是一个jQuery对象(因此可以对其进行链式调用)又是一个延迟对象(因此,如果像这样使用它,在转换效果完成时,承诺将运行). 我不知道,谢谢你指出!对我工作。但是,当其他脚本调用.hide()时,我怎么能延迟观看呢
$(function(){
$.when($('#one').hide('slow'))
.then(function () {
$('#two').hide('slow')
})
.then(function () {
$('#three').hide('slow')
});
});