【问题标题】:Removing $() jQuery wrapper to just get raw JS element [duplicate]删除 $() jQuery 包装器以获取原始 JS 元素 [重复]
【发布时间】:2012-09-28 14:45:43
【问题描述】:

随机只是出于好奇问题:

假设出于某种原因我从函数中返回了一个元素

$(element)

但我想删除 $( __ ) jQuery 包装器以保留常规 DOM 元素:

element

这可能吗?(我敢肯定最好先测试 $(element).length() 以确保它内部也不超过 1 个东西......

jsFiddle

【问题讨论】:

  • $(element).length 如果你想检查它是否有超过 1 个元素会更好。
  • 啊,这就是我要输入的内容,.size() 不是现在还是会调用它吗?
  • 是的,但是使用.size 只是一个额外的函数调用,这是不必要的。
  • 非常正确,哇,这是一个比我预期的要多得多的新问题:/哈哈出于某种原因,我以前从来没有这样做过......有没有简单的方法来test 如果它甚至是一个 jQuery 对象开始?
  • 试试alert($('anything') instanceof $);

标签: javascript jquery


【解决方案1】:
var firstElem = $(element)[0];

var firstElem = $(element).get(0);

在没有索引的情况下调用 get() 会为您提供一个元素数组。

参考:jQuery get()

【讨论】:

  • 伤心,我也知道只是在做$(element)[0] 哈哈...谢天谢地,今天是星期五,我需要休息一下哈哈。有什么理由使用.get() 而不是.toArray(),反之亦然?
  • @mcpDESIGNS:为了清楚起见,我不认为 epascarello 实际上是在建议$(element)[0] 的形式,使用起来毫无意义。当你得到一个以前构造的 jQuery 对象时,你只需要 [0].get(0)
  • 是的,我知道你们的意思是你可以通过[0] 第一个元素来分解它。欣赏它的家伙!
  • @mcpDESIGNS:.get() 方法可让您在特定索引处抓取元素。如果您不提供索引,它会返回一个包含所有元素的数组。 .toArray() 方法只返回一个数组。所以x[0] 等价于x.get(0)x.toArray() 等价于x.get()。优势toArray() has 是它有意义的名称。 [0] 的优点是它避免了函数调用。
【解决方案2】:

DOM 元素作为属性存储在从零开始的数字索引处,因此您可以像访问任何其他对象一样访问它们。

$jqObj[0];

或者使用toArray()获取完整的元素数组

$jqObj.toArray();

【讨论】:

    【解决方案3】:

    小提琴:http://jsfiddle.net/xHj5d/2/

    removeJWrapper($('#ohHeyo'));
    
    function removeJWrapper (el) {
        console.log(el[0]);
    }
    

    【讨论】:

    • 在邮件中发布代码,不要仅仅链接到第三方网站。
    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2018-04-15
    相关资源
    最近更新 更多