2017-07-25 66 views
0

我给我的项目分页(无尽,没有点击),当下一页加载时,模态中的输入select2 input字段被复制。所以经过一些滚动我有几个重复。用JS删除多个输入点

Looking like this

于是,我就删除重复这样的:

$(".modalOpen").click(function(){ 
    $('.theLangu1:eq(0)').next("span").remove(); 
    $('.theLangu1').children().find(...).remove(); 
    $('.theLangu1:eq(1)').remove(); 
    ... 
}) 

,但毫无效果。该代码看起来像这样在控制台:

因此,第一个需要保持活着,但其余部分已被删除。 ($('.theLangu1:eq(0)').remove();确实会移除除一个之外的所有内容,但它也会删除所需的内容,所以它不起作用)。

另一个问题是,我有多个<input>和其他select2领域,所以它不通过简单地删除所有(我试过)。所以它需要的东西在方向$(".theLangu1").children().find/next...

任何jQuery专家在这里告诉我如何删除重复或除第一个之外的所有输入?

+2

为什么不解决实际问题? – epascarello

+0

是的我很熟悉“xyproblem”,但这里要求大,我需要尽快解决这个问题。它是未来几天的解决方法。有多个jQuery版本加载(是的,我知道有'noConflict'选项和其他的东西,我试了一下,迄今为止没有任何工作),但这又是一个故事,它的复杂性... [email protected] – hansTheFranz

回答

1

可以使用not CSS伪选择

$('.theLangu1').parent() 
    .find(".theLangu1:not('.theLangu1:first-child')") 
    .remove(); 

你可以我们e本not JQuery的方法

$('.theLangu1').parent() 
    .find(".theLangu1").not(".theLangu1:first-child") 
    .remove(); 

https://jsfiddle.net/rwh7wd37/1/

+0

真的很不错。不得不改变它一点(类名),但这工作得很好。我很欣赏你花时间制作JSFiddle;) – hansTheFranz

1

为什么不能要添加只是一个类于母公司层面说

$(".modalOpen").addClass('hideTheLangu1'); 

,并保持css层次影响

.modalOpen.hideTheLangu1 .theLangu1:nth-child(n+2) { 
    display: none 
} 

所以所有有theLangu1类里面会被隐藏的物品,所以您的js代码将只添加类hideTheLangu1,并且只要您需要再次显示它们(如果您有这样的用例)就删除该类。如果你想完全从DOM中删除它,使用相同的方法,并通过jQuery选择器($(".modalOpen").find(".theLangu1:nth-child(n+2)")选择除第一个以外的所有其他应用,并且只需调用remove(),则根本不需要循环执行each项目。

+0

我试图让你的代码运行,但不得不面临很多困难。看起来像一个坚实的解决方案,但它现在不适合我。还是谢谢你的回答,很好的解释,我喜欢这个。 – hansTheFranz

1

您可以通过所有的人能循环,删除他们所有,但忽略第一个

for(let i=0;i<$('.theLangu1').length;i++) { 
    if(i!==0){ 
     $('.theLangu1').eq(i).remove(); 
    } 
} 

或者纯jQuery的

$('.theLangu1').not(':first').remove();

+0

我不想删除“theLangu1”类,但它的孩子。仍然不错的解决方案将不得不稍微修改它以使其满足我的需求。无论如何,谢谢:) – hansTheFranz