jQuery测试DOM元素是否支持“加载”事件

时间:2011-06-13 23:44:17

标签: jquery

是否可以检查jQuery对象是否支持触发特定事件的事件处理程序?我有一个带有DOM元素的函数,我想使用以下内容来监听“load”以淡入元素:

element.css({ opacity: 0.0 });
element.bind('load', function() { $(this).animate({ opacity: 1.0 }); });

不幸的是,如果传入的元素不是图像(因为它总是透明的),这会失败。谢谢!

2 个答案:

答案 0 :(得分:1)

jQuery可以将'load'事件绑定到任何 DOM元素(<==这永远不会失败)。但是,该事件在任何DOM元素上触发(它在windowdocument,脚本,样式表,图像,iframe等处触发。

如果'load'事件未在给定元素(例如,DIV)上触发,那么将负载处理程序绑定到该元素就没有意义。

答案 1 :(得分:0)

由于我的评论似乎是一条可接受的路线,所以这里有一个更完整的答案:

因为看起来你的函数只有在传递的元素是图像时才能工作,所以只需测试传入的元素是否是图像:

function conditional(element) {
    if(element.tagName == "IMG") {
        element.css({ opacity: 0.0 }).bind('load', function() { $(this).animate({opacity: 1.0 }); });
    }
}

http://jsfiddle.net/cHsMx/2/