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

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 四十条常用技巧大全 JavaScript 是一门优美、灵活和富有表现力的编程语言,拥有强大的能力和丰富的功能。本文将介绍 JavaScript 的四十个常用技巧,帮助您更好地使用此语言。 1. 使用 const 和 let 关键字 在声明变量时,使用 const 和 let 关键字可以避免意外给变量赋值,同时也可以使代码更清晰易懂。 c…

    JavaScript 2023年5月18日
    00
  • 一文教你彻底学会JavaScript手写防抖节流

    一文教你彻底学会JavaScript手写防抖节流 什么是防抖和节流 在介绍手写防抖节流之前,先来了解一下防抖和节流的概念: 防抖:指在短时间内多次触发同一个事件,只执行最后一次,或者只在开始时执行一次。 节流:指连续触发事件但是在 n 秒中只执行一次函数。即在某个时间段内,无论触发多少次事件,都只执行一次函数。 防抖和节流可以用来解决频繁触发的问题,避免资源…

    JavaScript 2023年6月10日
    00
  • javascript实现数组最大值和最小值的6种方法

    JavaScript实现数组最大值和最小值的6种方法 在JavaScript中,我们经常需要在数组中查找最大值和最小值。本文将介绍6种用JavaScript实现数组最大值和最小值的方法。 1. Math.max()和Math.min() 我们可以使用Math对象的max()和min()方法查找数组中的最大值和最小值。 let arr = [1, 2, 3, …

    JavaScript 2023年5月27日
    00
  • js异常捕获方法介绍

    接下来我将为您详细讲解“js异常捕获方法介绍”的完整攻略。 一、前言 在 Javascript 的开发中,我们难免会遇到一些错误,比如语法错误、逻辑错误、运行时错误等等。这些错误会导致代码执行的中断,并且在控制台上输出相应的错误信息,从而影响使用体验。为了提高网站的稳定性和用户体验,我们需要在代码中加入异常捕获机制来处理这些错误。 二、常见的异常捕获方法 1…

    JavaScript 2023年5月28日
    00
  • JS中input表单隐藏域及其使用方法

    当需要向后台传递某些信息时,可以使用input表单中的隐藏域。那么在JS中,如何创建隐藏域以及如何使用它呢?本文将详细讲解JS中input表单隐藏域的使用方法,帮助您完成这项技能。 创建隐藏域 在JS中创建input表单中用于发送信息的“隐藏域”,首先需要创建一个空的元素,然后通过设置其type为“hidden”来将它转化为隐藏类别。随后,需要给这个元素赋值…

    JavaScript 2023年6月10日
    00
  • 创建与框架无关的JavaScript插件

    创建与框架无关的JavaScript插件,需要考虑以下关键要点: 1. 避免与全局命名空间冲突 在创建插件时,应尽可能避免使用全局命名空间中已存在的变量和函数。可以通过创建一个伪命名空间,将插件中的所有变量和函数保存在其中,并确保不会与其他脚本发生冲突。 var MyPlugin = (function() { // 插件的代码放在这里… })(); 2…

    JavaScript 2023年6月11日
    00
  • js 中 document.createEvent的用法

    下面是关于”js 中 document.createEvent的用法”的攻略: 什么是document.createEvent? document.createEvent()是 JavaScript 中的一个方法,它可以用于创建一个自定义事件对象。在 DOM 中,事件是与元素关联的行为,例如点击、滚动、鼠标移动等等。 以下是 document.createE…

    JavaScript 2023年5月27日
    00
  • AJAX打造博客无刷新搜索

    接下来我将详细讲解如何使用AJAX技术打造博客无刷新搜索功能的完整攻略。 一、什么是AJAX? AJAX是Asynchronous JavaScript and XML的缩写,即用JavaScript和XML异步交互的一种技术,它可以在网页上实现异步请求和数据交互,从而实现无需刷新页面就可以动态更新网页。 二、AJAX打造博客无刷新搜索的步骤 第一步:创建搜…

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