微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – this.attr()不是一个函数?

我不太确定如果我没有在正确的范围内使用这个或什么,但我有一个脚本,基本上捕获链接点击,并导致页面淡出,然后再去链接页面.但是,如果链接javascript onclick,则脚本失败.这是我的代码
<script type="text/javascript">
pageObj = {
    init: function(){
        $("body").fadeto("slow",1);
    },redirectPage: function(redirect){
        window.location = redirect;
    },linkLoad: function(location){
        $("body").fadeOut(1000,this.redirectPage(location));
    }
};
$(document).ready(function() {
    pageObj.init();

    $("a").click(function(e){
        e.preventDefault();
        if (this.attr('onclick') !== undefined) {
            eval(this.attr('onclick').val());
        } else {
            var location = this.href;
            pageObj.linkLoad(location);
        }
    });
});
</script>

如您所见,我正在尝试检查链接是否具有onclick属性,然后调用onclick函数(如果存在).我该如何实现?

解决方法

虽然diodeus是正确的,您需要在使用attr()(它是一个jQuery集合的方法,而不是HTMLElement)之前将其包装在jQuery集合中,您可以跳过attr().
$("a").click(function(e){
    var location;
    e.preventDefault();
    if ($.isFunction(this.onclick)) {
        this.onclick.call(this,e);
    } else {
        location = this.href;
        pageObj.linkLoad(location);
    }
});

请注意,我使用该属性(当HTML文档加载时,属性通常预加载属性中,其中on_______属性预加载方法.另请注意,我使用this.onclick.call()而不是eval(),设置正确的对于onclick方法,并确保访问事件对象作为参数.

原文地址:https://www.jb51.cc/jquery/176718.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐