jQuery 开发者应该注意的9个错误

yizhihongxing

jQuery 开发者应该注意的9个错误

引入jQuery的方式错误

错误的方式如下:

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

在上述代码的例子中,我们通过引入了互联网上的jquery库来使用它。这种方式是错误的,因为该方法会在页面被打开的时候立即下载 jQuery 代码。因此,如果访问者的网络较慢,也可能会因为等待jQuery库的下载时间而导致页面加载时间过长。

正确的方式是将jQuery下载到本地,然后将其包含在您的项目中。如下所示:

<script src="js/jquery-3.5.1.min.js"></script>

在上面的例子中,我们将jQuery库文件存放在本地项目的 js 文件夹中,并在我们的 HTML 文件中包含了它。这种方法允许在访问者观看您的网页之前加载jQuery库。这可以显着缩短加载时间,减少页面请求。

不合适的 CSS 选择器

为了使用 jQuery 来选择元素,我们使用类似于 CSS 选择器的语法来选择 DOM 元素 。如果您不使用正确的 DOM 元素选择器,可能会选择错误的元素或通过想象得到的选择器无法选择任何元素。

示例:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("#div1").fadeOut();
  });
});
</script>

在上面的代码中,我们想在单击按钮时使 div1 消失。但是我们没有 #div1 的选择器。这个代码虽然会在测试和开发期间运行,但是当项目变得复杂时,就有可能会导致选择器错误。

正确的做法是具体给出唯一元素的选择器,如下所示:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("div#div1").fadeOut();
  });
}); 
</script>

在上面的代码中,我们使用了 $(“div#div1”)选择器,它具有更精确的元素选择机制,接下来的步骤就是使 div1 消失。

没有优化性能

使用 jQuery 的开发人员,在实际编写代码时需要避免降低性能的问题。在 jQuery 中,性能是很重要的,因为它的操作会涉及到对 DOM 的许多查询、操作、插入或删除。因此,我们必须遵循最佳实践,以避免任何可能的性能问题。

优化 jQuery 性能的建议:

  • 缓存选择器的结果。这样,当我们需要在 DOM 中进行多次操作时,我们可以避免重复查询相同的元素。
  • 合并 JavaScript 和 CSS 文件。这样可以减少文件请求次数,增加页面加载速度。
  • 避免使用复杂的选择器。更精确的选择器可以将代码时度保持在较低的水平。

改变全局 $ 或 jQuery 变量

很多开发者经常犯的一个错误是改变了$或jQuery变量,这个变量在使用jQuery库时十分重要。通过修改它,我们可能会影响其他插件或脚本的运行。

例如,在代码中定义了一个新的 $ 变量,它将与 jQuery 的变量冲突:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
var $ = "I am a string";
</script>

在上面的例子中,我们将$定义为一个字符串。这将导致访问 $(“选择器”)时出现错误,因为它不再指向 jQuery 对象。

不需要使用 jQuery 的特定函数

jQuery 库非常强大,它提供了很多函数来简化开发人员的工作。但是,这并不意味着你需要在所有情况下都使用 jQuery,有时原生 JavaScript 更适合你的目的。

例如,在下面的代码段中,我们使用 jQuery 的 on() 函数监听点击事件:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
  $("p").on("click", function(){
    $(this).hide();
  });
});
</script>

在这里,我们可以使用原生 JavaScript 的 addEventListener() 函数来完成相同的操作:

<script>
document.querySelector("p").addEventListener("click", function(){
  this.style.display = "none";
});
</script>

在上述代码中,我们使用了原生 JavaScript 的addEventListener()方法来监听单击事件。这比通过使用 jQuery on() 函数来监听事件要高效得多。

遗漏错误处理程序

jQuery 函数可以通过 jQuery 对象来链接调用,在调用链条上一旦发生了错误,可能会导致程序崩溃。例如,下面的例子中,当 “#myDiv” 不存在时会导致访问 null 的属性出现错误。

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$("#myDiv").hide().slideDown("slow");
</script>

为了避免空指针异常或其他错误,我们应该采取一些措施在开发中增加容错处理程序。例如,下面的示例可以处理语法错误:

<script>
if($("#myDiv").length > 0){
    $("#myDiv").hide().slideDown("slow");
} else {
    console.log("myDiv not found");
}  
</script>

在上述代码中,我们使用了 if 语句检查ID的myDiv是否存在。如果存在该元素,我们进行滑动动画,否则将向控制台输出错误信息。

在事件处理程序中未正确绑定this

在 jQuery 事件处理程序内部, this 关键字始终引用当前元素。这使得我们可以轻松访问要操作的元素。问题是,当我们使用函数传递事件处理程序时, this 可能会引用其他事物,而不是当前元素。

例如,在下面的代码段中,我们使用一个按钮的 click 事件来启动名为 showMessage() 的自定义方法:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
function showMessage(){
  alert(this.innerHTML);
}
$("button").click(showMessage);
</script>

在上面的代码中,当“按钮”被单击时, showMessage() 被使用。而 showMessage() 中的 this 关键字引用了window对象,而不是按钮元素。

解决这个问题的方法是 jQuery 提供了一个proxy() 方法。它可以更好地替换特定函数的 this 关键词,在事件处理程序中调用指定的函数。下面是代码示例:

<script>
$("button").click($.proxy(showMessage, this));
</script>

在上述代码中,我们使用了 jQuery 的 proxy()方法来将 showMessage() 方法的 this 强制转换为当前元素。这使得我们能够正确地在 showMessage() 方法内部访问当前元素。

没有优化代码量

最小化代码量是一个好的编程习惯,特别是在 jQuery 的使用过程中。如果您没有合适地使用 jQuery,它将会产生冗余代码,尤其在处理大型网站时这个问题变得尤为严重。

其中一种方法是使用链式编程来避免重复代码。当你调用一个函数时,有许多 jQuery 函数将返回它们自己的 jQuery 对象,这样就可以继续链它们的操作。这将有助于最小化代码,如下所示:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$("#myDiv").addClass("error")
          .removeClass("success")
          .html("An error occurred.");
</script>

在上述代码中,我们使用了$("#myDiv") 来选择元素,然后调用 addClass(),removeClass() 和 html() 方法来添加、删除样式和内容。

忽略了属性前缀

许多 jQuery 函数可以使用对象来设置多个属性实现相同的效果。这是十分方便的,但有些开发人员可能会忽略需要带有前缀的属性。

例如,当使用 css() 方法更改样式时,我们会将属性名作为对象的参数传递:

<script src="js/jquery-3.5.1.min.js"></script>
<script>
$("p").css({
    "background-color": "yellow",
    "font-size": "200%"
});
</script>

在上述代码中,我们使用了$(“p”)选择器选择所有段落,然后调用css()方法来设置背景颜色和字体大小。我们注意到在设置“background-color”和“font-size”属性时,我们分别使用了“-”来连接单词。这是必要的,因为在 CSS 中需要前缀,否则可能会导致属性设置失败。

因此,jQuery 开发人员应该为使用对象设置属性而不是字符串时记住添加属性前缀。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery 开发者应该注意的9个错误 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript实现文件下载并重命名代码实例

    接下来我会详细讲解如何使用JavaScript实现文件下载并重命名的完整攻略。 1. 使用XMLHttpRequest下载文件 使用XMLHttpRequest可以更加灵活地控制文件下载过程,并且可以同时下载多个文件。 function downloadFile(url, filename) { return new Promise((resolve, re…

    JavaScript 2023年5月27日
    00
  • javascript中interval与setTimeOut的区别示例介绍

    让我们来详细讲解一下“JavaScript中Interval与SetTimeout的区别示例介绍”。 标题 JavaScript中Interval与SetTimeout的区别示例介绍 正文 JavaScript中的Interval与SetTimeout都是用来实现定时器的方法,但是二者之间还是有一些区别的。 SetTimeout SetTimeout的作用是…

    JavaScript 2023年6月10日
    00
  • js日期相关函数dateAdd,dateDiff,dateFormat等介绍

    JS日期相关函数介绍 JavaScript提供了许多日期相关函数,其中包括 dateAdd、dateDiff、dateFormat 等常用的函数。下面我们就来详细讲解这些函数的用法。 Date 在介绍具体的日期函数之前,我们先来了解一下JavaScript中的 Date 对象。Date对象是JS中处理日期和时间的标准对象,可以用于获取当前时间、设置日期时间等…

    JavaScript 2023年5月27日
    00
  • JS异步代码单元测试之神奇的Promise

    JS异步代码单元测试一直是开发人员要面对的挑战。为了解决这个问题,Promise异步编程模式被引入到JavaScript中,因其简单、灵活和可重用性而受到广泛认可。在本攻略中,我们将深入探讨如何在单元测试中使用Promise,以及如何跟踪异步代码逻辑和处理可能的异步回调。 异步单元测试面临的问题 在传统的单元测试中,我们可以通过直接调用函数、对函数输出结果进…

    JavaScript 2023年5月28日
    00
  • ES6知识点整理之String字符串新增常用方法示例

    ES6知识点整理之String字符串新增常用方法示例 1. 介绍 ES6中为字符串提供了很多实用的新增方法,包括模板字符串、startsWith()、endsWith()、repeat()、includes()等。这些方法极大地方便了字符串常用操作的实现。 2. String.raw String.raw 方法用于获取一个模板字符串的原始字符串形式,忽略所有…

    JavaScript 2023年5月28日
    00
  • js格式化时间和js格式化时间戳示例

    下面是我对“js格式化时间和js格式化时间戳示例”的详细讲解。 什么是js格式化时间和js格式化时间戳? 在网站开发过程中,时间是一个很常见的数据类型。js格式化时间指的是将时间戳转化为人类可读的时间字符串,而js格式化时间戳指的是将时间字符串转化为时间戳。 如何使用js格式化时间? 在js中,可以使用Date对象来处理时间。下面是一个使用js格式化时间的示…

    JavaScript 2023年5月27日
    00
  • JavaScript的Backbone.js框架入门学习指引

    JavaScript的Backbone.js框架入门学习指引 什么是Backbone.js框架? Backbone.js是轻量级的JavaScript框架,用于在Web应用中提供MVC(Model-View-Controller)的结构。它被广泛应用于构建单页面应用程序(SPA)。 开始学习Backbone.js框架 为了开始学习Backbone.js框架,…

    JavaScript 2023年6月11日
    00
  • Javascript Math abs() 方法

    JavaScript中的Math.abs()方法用于返回一个数的绝对值。该方法接受一个参数,即要计算绝对值的数值。以下是关于Math.abs()方法的完整攻略,包括两个示例。 JavaScript Math对象中的abs()方法 JavaScript Math对象中的abs()方法用于返回一个数的绝对值。该方法接受一个参数,即要计算绝对值的数值。 下面是ab…

    JavaScript 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部