是否有使用 jQuery 设置项目类的首选方法
Is there a preferred approach to setting an item's class using jQuery
在jQuery之前,我会使用以下代码在元素上设置类:
document.getElementById("MyElementID").className = 'MyClassName';
这具有替换新类名之前的任何内容的预期行为MyClassName
在jQuery中,等价物似乎是:
$('#MyElementID').attr('class', 'MyClassName')
但是,我们也有内置的类函数, addClass()
, removeClass()
和 toggleClass()
.因此,为了达到相同的效果,我会说:
$('#MyElementID').removeClass().addClass('MyClassName');
显然,第一个jQuery示例更简洁,只需要一次函数调用(attr
,而不是addClass()
和removeClass()
)
我们是否可以假设我不能使用 prop
作为我正在使用的早期(当前不可更改)版本。
那么,您认为首选方法是什么?第二个样本是否给了我超出第一个样本的东西?
提前非常感谢。
jQuery的addClass(),removeClass()和has()方法使用元素的className属性。它们提供的最大优势是它们允许您添加或删除类,而不会影响其他类名集。
attr() 方法使用类似这样的东西:
document.getElementById("MyElementID")[name] = value;
对于只需要一个类名的情况,属性方法可能会更快。但是,我个人发现 addClass 方法更优雅,更容易适应,如果您将来需要添加更多类名。
我认为您应该检查所有这些功能的性能。 我个人认为 prop 方法最快(在 v1.6 中引入)
在这里看到性能 jQuery().attr vs jQuery().data vs jQuery().prop
http://jsperf.com/jquery-data-vs-jqueryselection-data/8
区别在于这家伙:
<div class="a_class another_class a_third_class">
attr('class','no_other_classes_now') <-- 将替换 class 属性中的所有内容,即使有多个空格分隔的类。这可能是执行此操作的最轻量级的 JQ 方法,因为它只是使用了已经在浏览器中正常工作了十多年的 DOM 方法。
.removeClass('a_third_class') 将删除一个类,而其他类保持不变。
.addClass('a_fourth_class') 将添加一个空格分隔的类,而不替换其他类。
^^ 这两个人必须为简单的类覆盖做比 attr 更多的工作,因为它们需要执行查找/替换类型操作。
Prop 用于更改没有 HTML 表示(如窗口对象)的 DOM 元素的属性(由于其他方便的方法,不太可能经常有用),或者由于不同的属性字符串可能意味着不同的东西而令人困惑。就像简单地将属性"checked"而不带等号或值等同于checked="checked"或checked="true"就布尔值(仅真/假)而言,JS属性在某些风格的HTML中是相关的。使用 prop,您将获得 javascript 属性,而不一定是实际 HTML 元素的引号之间的任何内容。
当你不处于那种情况下时,我会坚持使用attr方法。道具的全部意义似乎是从旧的 attr 方法中获取工作,所以如果在大多数情况下它更快,我会感到惊讶。更重要的是,它很常见且易于阅读。
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 在Javascript中,当使用array.prush方法向列表中添加项目时,如何对其进行排序
- 使用方法将扫描的项目添加到总数中
- 在另一个项目中使用大理石测试rxjs5方法
- 什么'是删除WinJS ListView中所有项目的最快方法
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- 拉力赛:有没有一种简单的方法来获取项目组合项目下的所有用户故事
- 在Sails/Waterline项目中,使用更新方法增加数据库值
- 有没有更花哨的方法可以在同一类中获得上一个项目
- 在JQuery中,'加载'方法'的相对路径在引用项目中的html文件时开始
- 识别项目组合的最快方法
- 需要一种方法来系统地处理NodeJS项目中的错误/异常/拒绝
- 建立React 0.12项目的正确方法是什么
- 在NPObject上调用方法时出错:(一个理想的)PhoneGap项目
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 将 JavaScript 库添加到我的项目的标准方法是什么?
- 这是在一个项目中添加Jquery和Angularjs的正确方法
- 需要在 JavaScript 中调用一个方法,当在 SharePoint 日历中单击更多项目旁边的三角形符号时
- 如何从外部项目调用 Web 方法
- JavaScript:有没有更好的方法来保留你的数组,但有效地连接或替换项目