将jQuery选择器存储在变量中

TheGr8_Nik

在以下示例中,stored jQuery selector返回错误的值。有可能存储选择器而不是结果吗?

js代码:

// storing the jQuery selectors
var
  $container = $( '.container' ),
  $element1  = $container.find( '.element' ),
  $element2  = $( '.element', $container ),
  $element3  = $( '.element' );

// append elements to the container
for( i=0; i<10; ++i ){
  $container.append( $(element_html) );  
}

// try the stored selectors -> returns 0
console.log( "1: " + $element1.length );
console.log( "2: " + $element2.length );
console.log( "3: " + $element3.length );

为什么,如果我使用容器选择器来查找元素,它会起作用吗?这是因为选择器将传回pointer匹配的元素,而不是返回的元素?

// this works
console.log( "1: " + $container.find( '.element' ).length );
console.log( "2: " + $( '.element', $container )  .length );
console.log( "3: " + $( '.element' )              .length );

jsFiddle示范

TJ人群

您对什么有一个基本的误解

variableName = $("selector here");

做。它不“存储选择器”。它针对DOM中的当前元素运行选择器,创建一个jQuery对象,将匹配的元素放入jQuery对象,并为您提供对该jQuery对象的引用。选择器未存储(jQuery内部组件)。

因此给出:

<body>
<div class="foo">x</div>
</body>

然后:

var $divs = $("div.foo");
console.log($divs.length);        // 1

给我们这个:

$ divs指向DOM中一个div的jQuery对象

如果再添加另一个匹配项div

$('<div class="foo"></div>').appendTo(document.body);

我们$divs仍然只指向第一个。向DOM添加另一个匹配元素对从引用的jQuery对象没有影响$divs

$ divs指向一个div的jQuery对象,但是DOM中有两个

如果我们在那时重新运行查询:

$divs = $("div.foo");

...那么我们有:

$ div指向DOM中两个div的jQuery对象

如果您有一个包含DOM元素的jQuery对象,并将后代元素添加到该DOM元素,则将该jQuery对象与(例如)一起使用.find将看到后代。这是因为父DOM元素已经在jQuery对象中了。例如,spandiv我们已经从jQuery对象引用s中添加一个

$ div指向DOM中两个div的jQuery对象,现在有一个span

如果我们使用.find$divs该点处寻找span,我们会发现它,因为它是我们已经有了一个参考要素之一的后裔。

如果您想稍后再次运行DOM搜索以查找匹配的元素,则只需$()再次使用即可这在上面是隐式的,但是为了清楚起见:

var $divs = $("div.foo");
console.log($divs.length);        // 1
$('<div class="foo"></div>').appendTo(document.body);
console.log($divs.length);        // Still 1
$divs = $("div.foo");
console.log($divs.length);        // Now it's 2

因此,在需要时“存储选择器”是将选择器字符串而不是jQuery对象存储在某个地方的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将JQuery选择器的结果存储在变量中可以吗?

来自分类Dev

将jQuery选择器存储到变量中不起作用?

来自分类Dev

如何扩展存储在变量中的jQuery选择器?

来自分类Dev

如何扩展存储在变量中的jQuery选择器?

来自分类Dev

将jQuery选择器变量附加到表中

来自分类Dev

将选择器放置在变量中

来自分类Dev

jQuery选择器中的Razor变量

来自分类Dev

jQuery检查变量中的选择器

来自分类Dev

如何将日期选择器中的值存储到字符串变量中

来自分类Dev

当按下按钮时,如何将选择器视图中的数据存储在变量中?

来自分类Dev

我应该将我的jQuery选择器存储到一个变量中吗?

来自分类Dev

jQuery将选择器引用为变量

来自分类Dev

将变量与jquery选择器一起使用

来自分类Dev

将变量传递给jquery选择器

来自分类Dev

将变量传递给 jQuery 属性包含选择器

来自分类Dev

如何将后代选择器连接到jQuery中的变量

来自分类Dev

更改jQuery中的变量选择器的属性?

来自分类Dev

在jQuery中添加变量和多个选择器

来自分类Dev

如何在 jQuery 选择器中包含变量?

来自分类Dev

将“文档”与“选择器本身”放在jQuery中?

来自分类Dev

jQuery选择器,以变量作为参数

来自分类Dev

使用变量选择器的jQuery

来自分类Dev

使选择器的行为与jQuery中的选择器相同

来自分类Dev

将选择的日期时间对话框选择器转换为存储在 sqlite DB 中

来自分类Dev

在选择器中覆盖SASS变量

来自分类Dev

NgRx:将存储值传递给存储选择器

来自分类Dev

Datepicker:如何在单击按钮时弹出日期选择器并将值存储在变量中

来自分类Dev

在一个变量中存储多个查询选择器的最佳方法

来自分类Dev

Datepicker:如何在单击按钮时弹出日期选择器并将值存储在变量中

Related 相关文章

  1. 1

    将JQuery选择器的结果存储在变量中可以吗?

  2. 2

    将jQuery选择器存储到变量中不起作用?

  3. 3

    如何扩展存储在变量中的jQuery选择器?

  4. 4

    如何扩展存储在变量中的jQuery选择器?

  5. 5

    将jQuery选择器变量附加到表中

  6. 6

    将选择器放置在变量中

  7. 7

    jQuery选择器中的Razor变量

  8. 8

    jQuery检查变量中的选择器

  9. 9

    如何将日期选择器中的值存储到字符串变量中

  10. 10

    当按下按钮时,如何将选择器视图中的数据存储在变量中?

  11. 11

    我应该将我的jQuery选择器存储到一个变量中吗?

  12. 12

    jQuery将选择器引用为变量

  13. 13

    将变量与jquery选择器一起使用

  14. 14

    将变量传递给jquery选择器

  15. 15

    将变量传递给 jQuery 属性包含选择器

  16. 16

    如何将后代选择器连接到jQuery中的变量

  17. 17

    更改jQuery中的变量选择器的属性?

  18. 18

    在jQuery中添加变量和多个选择器

  19. 19

    如何在 jQuery 选择器中包含变量?

  20. 20

    将“文档”与“选择器本身”放在jQuery中?

  21. 21

    jQuery选择器,以变量作为参数

  22. 22

    使用变量选择器的jQuery

  23. 23

    使选择器的行为与jQuery中的选择器相同

  24. 24

    将选择的日期时间对话框选择器转换为存储在 sqlite DB 中

  25. 25

    在选择器中覆盖SASS变量

  26. 26

    NgRx:将存储值传递给存储选择器

  27. 27

    Datepicker:如何在单击按钮时弹出日期选择器并将值存储在变量中

  28. 28

    在一个变量中存储多个查询选择器的最佳方法

  29. 29

    Datepicker:如何在单击按钮时弹出日期选择器并将值存储在变量中

热门标签

归档