2015-04-27 84 views
0

我有兩個彼此相鄰的不同表。我和他們做了一些事情,一切順利,但是當我想要刪除他們中的一個(他們的父母的第一個孩子)時,它將兩者都刪除。我嘗試了很多方法來選擇第一個元素,例如::first-child, :first, .first(), :nth-child(1), eq(0) ...但是如果我使用.remove(),它們都不起作用。另一方面,當我使用例如.empty(),它的工作原理。所以這裏是我的問題:什麼導致這個問題?JQuery .remove()刪除比選定的元素多的元素

<div class="calendar_wrapper_border "> 
    <table> 
     <tr> 
      <td> 
       something here 
      </td> 
     </tr> 
    </table> 
    <table> 
     <tr> 
      <td> 
       something here 
      </td> 
     </tr> 
    </table> 
</div> 
<script> 
    //doesn't work 
    $('.calendar_wrapper_border table:first-child').remove(); 
    //does work 
    $('.calendar_wrapper_border table:first-child').empty(); 
</script> 

正如我所說,它不適用於任何'第一'選擇器。還有一件事是,兩個表都是使用JQuery生成的,並附加到該DIV中。但對我來說,沒有任何意義,那.empty()工作,但.remove()刪除兩個表。 如果有人可以給我解釋我的錯誤,我可能會讓我感到很高興。

我會給你這個html代碼的整個結構。

<div class="calendar_wrapper_border"> 
<table class="calendar"> 
    <tbody> 
    <tr class="names"> 
     <td class="day    name_of_day">Po</td> 
     <td class="day name_of_day">Út</td> 
     <td class="day name_of_day">St</td> 
     <td class="day name_of_day">Čt</td> 
     <td class="day name_of_day">Pá</td> 
     <td class="day name_of_day">So</td> 
     <td class="day name_of_day">Ne</td> 
    </tr> 
    <tr> 
     <td class="day disabled" date="30-3-2015">30</td> 
     <td class="day disabled" date="31-3-2015">31</td> 
     <td class="day" date="1-4-2015">1</td> 
     <td class="day" date="2-4-2015">2</td> 
     <td class="day" date="3-4-2015">3</td> 
     <td class="day" date="4-4-2015">4</td> 
     <td class="day" date="5-4-2015">5</td> 
    </tr> 
    <tr> 
     <td class="day" date="6-4-2015">6</td> 
     <td class="day" date="7-4-2015">7</td> 
     <td class="day" date="8-4-2015">8</td> 
     <td class="day" date="9-4-2015">9</td> 
     <td class="day" date="10-4-2015">10</td> 
     <td class="day" date="11-4-2015">11</td> 
     <td class="day" date="12-4-2015">12</td> 
    </tr> 
    <tr> 
     <td class="day" date="13-4-2015">13</td> 
     <td class="day" date="14-4-2015">14</td> 
     <td class="day" date="15-4-2015">15</td> 
     <td class="day" date="16-4-2015">16</td> 
     <td class="day" date="17-4-2015">17</td> 
     <td class="day" date="18-4-2015">18</td> 
     <td class="day" date="19-4-2015">19</td> 
    </tr> 
    <tr> 
     <td class="day" date="20-4-2015">20</td> 
     <td class="day" date="21-4-2015">21</td> 
     <td class="day" date="22-4-2015">22</td> 
     <td class="day" date="23-4-2015">23</td> 
     <td class="day" date="24-4-2015">24</td> 
     <td class="day" date="25-4-2015">25</td> 
     <td class="day" date="26-4-2015">26</td> 
    </tr> 
    <tr> 
     <td class="day selected" date="27-4-2015">27</td> 
     <td class="day" date="28-4-2015">28</td> 
     <td class="day" date="29-4-2015">29</td> 
     <td class="day" date="30-4-2015">30</td> 
     <td class="day disabled" date="1-1-2015">1</td> 
     <td class="day disabled" date="2-1-2015">2</td> 
     <td class="day disabled" date="3-1-2015">3</td> 
    </tr> 
    </tbody> 
    </table> 
    <table class="calendar"> 
    <tbody> 
    <tr class="names"> 
     <td class="day    name_of_day">Po</td> 
     <td class="day name_of_day">Út</td> 
     <td class="day name_of_day">St</td> 
     <td class="day name_of_day">Čt</td> 
     <td class="day name_of_day">Pá</td> 
     <td class="day name_of_day">So</td> 
     <td class="day name_of_day">Ne</td> 
    </tr> 
    <tr> 
     <td class="day disabled" date="30-3-2015">30</td> 
     <td class="day disabled" date="31-3-2015">31</td> 
     <td class="day" date="1-4-2015">1</td> 
     <td class="day" date="2-4-2015">2</td> 
     <td class="day" date="3-4-2015">3</td> 
     <td class="day" date="4-4-2015">4</td> 
     <td class="day" date="5-4-2015">5</td> 
    </tr> 
    <tr> 
     <td class="day" date="6-4-2015">6</td> 
     <td class="day" date="7-4-2015">7</td> 
     <td class="day" date="8-4-2015">8</td> 
     <td class="day" date="9-4-2015">9</td> 
     <td class="day" date="10-4-2015">10</td> 
     <td class="day" date="11-4-2015">11</td> 
     <td class="day" date="12-4-2015">12</td> 
    </tr> 
    <tr> 
     <td class="day" date="13-4-2015">13</td> 
     <td class="day" date="14-4-2015">14</td> 
     <td class="day" date="15-4-2015">15</td> 
     <td class="day" date="16-4-2015">16</td> 
     <td class="day" date="17-4-2015">17</td> 
     <td class="day" date="18-4-2015">18</td> 
     <td class="day" date="19-4-2015">19</td> 
    </tr> 
    <tr> 
     <td class="day" date="20-4-2015">20</td> 
     <td class="day" date="21-4-2015">21</td> 
     <td class="day" date="22-4-2015">22</td> 
     <td class="day" date="23-4-2015">23</td> 
     <td class="day" date="24-4-2015">24</td> 
     <td class="day" date="25-4-2015">25</td> 
     <td class="day" date="26-4-2015">26</td> 
    </tr> 
    <tr> 
     <td class="day selected" date="27-4-2015">27</td> 
     <td class="day" date="28-4-2015">28</td> 
     <td class="day" date="29-4-2015">29</td> 
     <td class="day" date="30-4-2015">30</td> 
     <td class="day disabled" date="1-1-2015">1</td> 
     <td class="day disabled" date="2-1-2015">2</td> 
     <td class="day disabled" date="3-1-2015">3</td> 
    </tr> 
    </tbody> 
</table> 
</div> 

我想刪除這些表中的一個,但沒有成功。

+0

在您的選擇器中,您在日曆包裝器內部爲每個表格刪除第一個孩子 –

+0

http://jsfiddle.net/n1514sn7/1/可能的解決方案訪問第一個

的第一個​​。 – briosheje

+0

您的代碼[在本演示中按預期工作](http://jsfiddle.net/7p4enokg/)。 – Ted

回答

0

那麼,當我試圖重現問題時,我發現這個問題在哪裏。爲此,我應該儘可能多地降低成本。問題是,我在.animate()函數的回調函數中調用了這個函數。但是這個函數運行了兩次,因爲它動畫了兩個表(當然!),這就是爲什麼它總是刪除兩個表。第一個動畫 - >刪除第一個表格;第二個動畫 - >刪除第一個表格(在這種情況下只剩下一個)。這就是我發現我是白癡:)抱歉浪費你的時間人。

+0

您是否可以將此答案標記爲已接受,因此它在問題頁面上顯示爲如此? –

+0

@StefanWittwer我想,但它不會讓我接受爲2天的答案(只是因爲它是我自己的答案) –

+0

啊我看到,對不起 –