何时使用jQuery包装器方法而不是内置的javascript方法

时间:2012-03-30 22:17:05

标签: javascript jquery

应该避免哪些jQuery方法支持内置方法/属性?

示例:

$('#el').each(function(){

  // this.id vs $(this).attr('id');
  // this.checked vs $(this).is(':checked');

});;

3 个答案:

答案 0 :(得分:3)

在这些情况下,我使用直接的javascript属性,例如this.id

  1. 每当它完全符合我的要求时。
  2. 当速度很重要时。
  3. 当我关心的所有浏览器都支持我所需要的时候。
  4. 我在以下时间使用jQuery访问方法:

    1. 存在跨浏览器支持问题,或者我不确定是否存在跨浏览器问题。
    2. 当jQuery方式具有更多或增强的功能时,这在我的环境中很有用。
    3. 当它是链接操作的一部分时,链接可以更好地使用jQuery。
    4. 当我已经在使用jQuery进行此操作时,混合/匹配某些直接访问和一些jQuery访问似乎不一致。
    5. 例如:str = $(elem).html()str = elem.innerHTML相比没有任何优势,但$(elem).html(str)确实比elem.innerHTML = str;有一些优势,因为jQuery方法会清理对象被删除的内容比innerHTML方式更完整。

答案 1 :(得分:1)

这是一个广泛的问题,但这里有一些我认为有用的指南。 您可以/应该在以下情况下使用本机js方法:

  1. 你知道你在做什么。那就是你知道浏览器之间的规范和任何可能的不一致。
  2. 您正在编写性能至关重要的代码片段,其中方便性不是首要任务
  3. 您对库函数的工作方式不满意。这可以分解为以下内容:
    • 库实现是错误的(发生了)
    • 库实现不完整(例如,尚未支持一些可以在您的情况下使用的新功能)
    • 只是您对某些功能的看法与图书馆的实施不同
  4. 在任何情况下,第一个条件应该是真的:)其他人可以合并或分开。我知道他们都是有争议的,可以引发长期的哲学谈判,但我认为它们是很好的起点并总结了很多案例。

    但最重要的是 - 如果您没有理由避免使用库方法,请使用它们

答案 2 :(得分:1)

大多数DOM属性在所有主流浏览器中都没有问题。对于您提到的两个示例(idchecked),DOM属性是100%可靠的,并且应该优先使用jQuery等效的可靠性,性能和可读性。

对应于布尔属性的所有属性也是如此:readonlydisabledselected是常见属性。 Here are some moreclassName也是100%稳固的。对于其他属性和属性,由您决定。如果您不确定并且可以承受失去一些性能(通常是这种情况),那么使用像jQuery这样的库可能是最好的方法。

Stack Overflow常规Andy Earnshaw在博客中写道:http://whattheheadsaid.com/2010/10/utilizing-the-awesome-power-of-jquery-to-access-properties-of-an-element