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

jQuery扩展功能失败

如何解决jQuery扩展功能失败

我是JQuery的新手,正在绞尽脑汁试图理解为什么这段代码有效,而我的无效。这是一个片段...

  window.onbeforeunload = function(event) {
    $('#mqTable tr.group1').css("background-color","pink"); // This works
    $('#mqTable tr.group1').changeColor(); // Trying my own function fails


    // Prevent the warning message when leaving the page
    //        event.preventDefault();

    event.returnValue = "To be removed...";
  };

  jQuery.fn.extend({
    changeColor: function() {
      $(this).css("background-color","pink");
      return $(this);
    }
  });

因此,我正在尝试创建自己的自定义函数,但我做错了什么。 有什么想法吗?

解决方法

很抱歉,我不知道如何很好地使用Stack Overflow,所以这是我发现格式化代码的唯一方法。

我可以通过单击按钮来调用该函数,并且它理解为扩展的jQuery函数。但是当我尝试从onbeforeunload函数中调用它时出现错误: TypeError:firstGroup1.children(...)。changeColor不是函数

enter image description here

图片显示我单击了“更改颜色”按钮,并且更改了group1行的颜色...所以我知道我有一个有效的自定义jQuery函数。底部是尝试从onbeforeunload函数调用同一函数时遇到的错误。

以下是相关代码:

<script>
$( document ).ready(function($) {
    $('#changeColors').on('click',function(){
        try {
            var firstGroup1 = $('#mqTable tbody');
            firstGroup1.children("tr.group1").changeColor();
        }
        catch (err) {
            $('#errMsg').html(err);
        }
    });
});

window.onbeforeunload = function(event) {
    console.log("in onbeforeunload");
    var firstGroup1 = $('#mqTable tbody');
    try {
        firstGroup1.children("tr.group1,tr.group2").changeColor();
    } catch (err) {
        $('#errMsg').html(err);
    }

    // Prevent the warning message when leaving the page
    event.returnValue = "Oh boy";
};

jQuery.fn.extend({
    changeColor: function() {
        console.log("in changeColor");
        $(this).css("background-color","pink");
        return $(this);
    }
});

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