【问题标题】:How do you remove a jquery object from a jquery object collection?如何从 jquery 对象集合中删除 jquery 对象?
【发布时间】:2020-08-23 10:42:48
【问题描述】:

我意识到这是一个重复的问题,我什至见过jQuery remove object from object collection 问题,但我希望有一个更好的更完整的答案。

如果我要创建一个集合,例如$divs = $( 'div' );,它可以返回一个集合中的多个 div,但如果我需要从集合中删除/删除其中一个,而不是从 DOM 中,我看不到一个 jQuery 命令来执行此操作。链接文章解决方案中建议的答案之一说集合中留下了一个空值,我不希望发生这种情况。

在我的例子中,我的集合中的所有对象在创建集合时“看起来”都是一样的,也就是说,我没有可以在 CSS 选择器中使用来排除对象的类、属性或属性值差异我想从我的收藏中删除的项目。发生的情况是用户单击要删除的项目旁边的按钮,然后通过单击确定需要删除的项目。

我可以使用按钮单击来临时修改 div.drop-down-list,然后在创建 jQuery 集合时使用该差异来排除一个元素,但我希望有更干净的东西。

除了处理按钮单击和确定要删除哪个 div.drop-down-list 的代码之外,这是我正在尝试创建的代码,只是 jQuery 中没有 removeObject 语句。

$div = $( 'div.drop-down-list' ); // Get all of the drop-down-lists
$div.removeObject( $( clickedDropDownList ) ); // Create a new jQuery object for the one to exclude.
$div.hide();  // Hide/Close all the others.

使用add( ... ) 语句可以轻松地将新的 jQuery 对象项添加到集合中,这似乎很奇怪,但没有一种简单的方法可以删除它们。

【问题讨论】:

    标签: jquery collections element


    【解决方案1】:

    好吧,我认为您想要的是过滤数组而不是删除目标。您可以尝试使用filter 方法实现此目的,如下所示:

    
    $div = $( 'div.drop-down-list' ); // Get all of the drop-down-lists
    cosnt $filtered = $div.filter((ix,el)=> el !== clickedDropDownList  )
    $filtered.hide(); 
    // assumed that clickedDropDownList is a native element not a jQuery object.
    
    // later on if you want to do something with all the items use the `$div` 
    // if you want the previously filtered items use `$filtered`
     
    

    【讨论】:

    • 是的,确实有效,但如果我需要重用对象列表以在对要删除/删除/排除的对象执行某些操作后显示它们,我需要运行每次我想对该组对象项进行操作时显示的列表。我意识到 jQuery 在内部使用 .hide()、.show() 等命令执行此操作,但希望比使用显式循环更有效。再次感谢。
    • @HowardBrown 您可以将结果分配给filter 方法结果的变量,您可以稍后在代码中使用它。请参阅更新的部分。
    • 啊,是的,我现在明白了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多