2017-04-17 55 views
0

因此,基本上,如果行已經存在於DOM中,那麼它們上下移動行可以很好地工作,但行使用jquery附加行並嘗試向上和向下移動它不起作用。如何使用jQuery向上或向下移動附加行

$(".addmore").on('click',function(){ 
 
\t count=$('table tr').length; 
 
\t var data="<tr><td>"+count+"</td>"; 
 
     data+="<td><a class='down' href='#'>Down</a> <a class='up' href='#'>Up</a></td>"; 
 
    $('table').append(data); 
 
}); 
 

 

 
$(".up,.down").click(function() { 
 
    var $element = this; 
 
    var row = $($element).parents("tr:first"); 
 
    if($(this).is('.up')){ 
 
    row.insertBefore(row.prev()); 
 
    } 
 
    else{ 
 
     row.insertAfter(row.next()); 
 
    } 
 
     
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button type="button" class='addmore'>+ Add Row</button> 
 
\t \t \t \t \t \t 
 
<table> 
 
    <thead> 
 
    <tr> \t \t \t \t \t \t \t  
 
     <th>ID</th> 
 
     <th>Action</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
    <td>1</td> 
 
     <td><a class="down" href="#">Down</a> <a class="up" href="#">UP</a></td> 
 
    </tr> 
 
    </tbody> 
 
</table> \t \t \t \t \t \t \t \t

請運行上面的例子,因爲它會解釋清楚。

在這個例子中,你可以看到行ID是完美地上下移動,因爲它已經存在於表中,但是如果我添加更多的行然後移動它們不起作用。

回答

3

如果您使用以下內容,即使是新添加的元素也可以使用。

$("table").on("click",".up,.down", function {}); 

$(".addmore").on('click',function(){ 
 
\t count=$('table tr').length; 
 
\t var data="<tr><td>"+count+"</td>"; 
 
     data+="<td><a class='down' href='#'>Down</a> <a class='up' href='#'>Up</a></td>"; 
 
    $('table').append(data); 
 
}); 
 

 

 
$("table").on("click",".up,.down", function() { 
 
    var row = $(this).parents("tr:first"); 
 
    if($(this).is('.up')){ 
 
    row.insertBefore(row.prev()); 
 
    } 
 
    else{ 
 
    row.insertAfter(row.next()); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button type="button" class='addmore'>+ Add Row</button> 
 
\t \t \t \t \t \t 
 
<table> 
 
    <thead> 
 
    <tr> \t \t \t \t \t \t \t  
 
     <th>ID</th> 
 
     <th>Action</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
    <td>1</td> 
 
     <td><a class="down" href="#">Down</a> <a class="up" href="#">UP</a></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

哇簡單的東西,我生氣了,想這麼多東西。感謝它的作品。 :) – Phoenix

+0

'$(「。up,.down」)有什麼問題。click(function(){' – Phoenix

+1

問題是$(「。up,.down」)是生成jQuery對象,然後指定一個點擊值,但是,我們希望選擇我們的表格,然後選擇下面的所有元素,我們將過濾.up和.down,這樣我們就可以容納新元素。 – Neil

相關問題