2012-12-15 2 views
1

테이블 내에서 추가 TR :위치 나는이 코드를 얻을 수 있습니다 내 테이블 몸에 테이블 행을 추가 할

var tr = $('<tr/>'); 
$('#myTable > tbody:last').append(tr); 

그러나 일부 페이지가 너무 많은 행이있을 수 있고, 따라서 나는 동적으로 생성 마지막 열의 페이징 (paginator).

위의 코드를 사용하면 새 tr이 paginator 아래에 추가됩니다. 이는 좋지 않습니다.

내 매기기 tr 때문에, 그 매기기 행하기 전에 새 행을 추가하면 내가 마지막 그럴 필요가 id = "paginator_tr"을 가지고 있는지 확인하는 조건으로이 코드

$('#myTable > tbody:last').append(tr); 

을 변경할 수 있는지 궁금 아이디 <tr id="paginator_tr">있다 . 그렇지 않으면 간단히 새 행을 마지막 행으로 추가하십시오.

jquery에서 조건부가 가능합니까? 페이지 배열 요소를, 그렇지 않으면 당신은 그럴 필요 요소를 추가 할 수있는 경우

+1

다음에 fiddle이 만족 스럽다면 css : not() 의사 선택기를 사용해 보셨습니까? –

+0

페이 지 네이터에 새로운 tr을 추가하는 것이 더 쉬울 지 궁금합니다. 그 전에 페이 지 네이터가 있는지 확인할 수 있습니다. Jquery prepend : http://api.jquery.com/prepend/ –

답변

1
var $tbody = $('#myTable > tbody').last(), 
    $paginator_tr = $tbody.find('#paginator_tr'); 

if ($paginator_tr.length) { 
    $paginator_tr.before(tr) 
} else { 
    $tbody.append(tr) 
} 

당신은 before 방법을 사용할 수 있습니다.

+0

완벽합니다. +1 – Houman

0

사용 insertBefore() 가정 당신의 페이지 매김 행은 항상

tr.insertBefore('#paginator_tr') 

API 참조 존재 (! 작동하지만) 여기

+0

@DavidThomas '행이 항상 존재하는 경우' – charlietfl

+0

편집하지 않은 댓글을 남기기 전에는 편집 한 것이 아닙니다. –

0

http://api.jquery.com/insertBefore/ 가능성이 약간 미친 또 다른 접근 방식의를 :

var table = $(this), 
    tr = $('<tr />'), 
    td = $('<td />', {'text' : 'Newly-added cell.'}).appendTo(tr), 
    method = table.find('#paginator_row').length ? ['insertBefore', '#paginator_row'] : ['appendTo', table.find('tbody').last()] 
    tr[method[0]](method[1]); 

JS Fiddle demo.

효과적으로 method 배열에는 두 개의 인수가 포함됩니다. 첫 번째는 사용할 jQuery 메서드이고 두 번째는 해당 메서드의 선택기이며 tr 요소가 추가 된 위치를 결정합니다. 점의 표기법 (object.propertyName)과 대괄호 (object[propertyName])를 사용하여 객체의 속성에 액세스 할 수 있다는 사실에 의존합니다.

참고 :

관련 문제