2017-07-25 52 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