2012-02-15 3 views
0

후 작동하지 :jQuery를이 코드를 사용하여 AJAX

$("table > :not(thead) > tr.Selected").removeClass('Selected') 

선택한 클래스가 그 클래스를 제거 모든 테이블 행을 찾으려면.

또한,이 코드 사용 : 선택한 클래스가 행을 ID를 찾기 위해 노력하고있다

var ReqID = $("table > :not(thead) > tr.Selected").attr('id') 

합니다.

이 코드는 AJAX를 사용하여 테이블을 다시로드하고 작업이 모두 중단되고 해당 줄이 작동하지 않을 때까지 완벽하게 작동합니다.

아이디어가 있으십니까?

Thankss!

EDIT

많은 코드 :

: 여기
function EditRequest() 
{var ReqID = $("table > :not(thead) > tr.Selected").attr('id') 
alert(ReqID); 
$.post("a/outputresults2.php", {editdynamic: ReqID} ,  function(data){ 
$('#resultstable').html(data); 
}); 

} 

function Selected(x) 
{ 
$("table > :not(thead) > tr.Selected").removeClass('Selected') 
$('#'+x).toggleClass('Selected'); 
} 

원본과는 AJAX'ed 된 경우 업데이트 된 테이블을 출력 PHP이다

여기

는 AJAX 호인

if($RequestID == $ID){ 
       $requestrows.=" 
    <tr id=\"$RequestID\" onClick=\"Selected($RequestID)\" class=\"Selected\" > 
     <td><input type=\"text\" id=\"MCode\" value=\"$ModCode\"></td> 
     <td><input type=\"text\" id=\"RName\" value=\"$RoomName\"></td> 
    ..etc etc etc 

    </tr>"; 
    } 
    } 
    if($RequestID != $ID){ 
$requestrows .= 
"  <tr id= \"$RequestID\" onClick=\"Selected($RequestID)\" > 
     <td>$ModCode</td> 
     <td>$RoomName</td> 
     ... etc etc etc 

    </tr>"; 
    } 
} 



echo($requestrows); 

테이블이 동적으로 변경되는 것은 resultstable

감사

+1

AJAX 루틴과 HTML의 관련 부분을 게시 할 수 있습니까? – HackedByChinese

+0

추가 코드가 추가되었습니다. 감사! – user1096685

+0

editRequest를 어떻게 호출합니까? – nodrog

답변

2
당신은 아마 제대로 새로로드 된 개체를 결합하는 라이브 클릭 이벤트와 사용자 이벤트를 호출 할 필요가

:

$('#my_trigger').live('click', function() { 
    .. some code 
}) 

당신이 사용하는 정확한 방법에 당신이 더 많은 정보를 가지고 도움이 될 것이다 이.

내가이 jQuery를 침해하기 때문에 innerHTML 재산이 될 수 있다는 의심 jquery live docs

+0

질문과 관련하여 무엇이 있습니까? 코드에 클릭 핸들러 나 다른 핸들러가 없습니다. – Jacob

+0

답장을 보내 주셔서 감사합니다. 내가 게시하기 전에 연구했을 때 on()을 사용하여 많은 사람들이 연결되는 것을 보았습니다. 그러나 Jacob이 말했듯이 클릭 핸들러를 사용하고 있는지는 알 수 없습니다. 그래서 그것은 나를 혼란스럽게 만들었습니다! 감사합니다 – user1096685

+0

@ Jacob은 동의했습니다, 더 많은 코드를 보는 것이 좋을 것입니다. 그러나 종종 이것은 그렇습니다. 그래서 지적하기는하지만 유용합니다. 내 대답을 제거해야합니까? 나는 예의의 확실하지 않다. – nodrog

2

를 보라. "ajax"응답은 테이블을 대체하려고 할 때 기존 DOM 구조를 근본적으로 파괴합니다.

이것이 이유인지 확인하려면 javascript console을 참조해야합니다. 선택한 요소가 실제로 있는지 확인하려면 console.log()을 사용해보십시오. 당신은 클릭 한 행을 확인하도록하려는 경우

0

, 당신은이 작업을 수행 할 수 있습니다

$('#resultstable').on('click', 'tbody tr', function() { 
    $('#resultstable tr.Selected').removeClass('Selected'); 
    $(this).addClass('Selected'); 
}); 

당신은 더 이상 그 onClick 이벤트를 렌더링 할 필요가 당신은 function Selected(x)

편집 제거 할 수 : 하나의 행을 편집 모드로 만들기 위해 전체 테이블을 렌더링하고 있습니까? 그것은 매우 효율적 아니지만, 당신이 그 일을하는 경우, 다음 JQuery와 스크립트는이 단순화 될 수있다 : 당신이보기 outputresults2.php를 다시로드에 JS를 복사하여이 문제를 해결할 수

$('#resultstable').on('click', 'tbody tr', function() { 
    $.post('a/outputresults2.php', {editdynamic: this.id}, function(data) { 
     $('#resultstable').html(data); 
    }); 
}); 
+0

안녕하세요,이 작동하지 않습니다하지만 정확히 내가 쫓고 무엇입니까? 그것은 오류 콘솔에 오류가 발생하지 않으며, 아무 것도하지 않는 것 같습니다! 나는 그것을 document.ready에 넣으려고했지만 아무 소용이 없다. $ ('# resultstable'). ('클릭', 'tbody tr', function() { . 그냥 확인하기 위해, 그 행을 클릭하면 빨간색으로 바뀌고 다른 선을 클릭하면 그 선은 빨간색으로 바뀌고 다른 선은 다시 정상으로 변합니다. 그게 바로 제가 한 일입니다. – user1096685

+0

그게 무슨 뜻인가요? 당신의 테이블에는 tbody가 있습니다. 나는 당신의 코드가 thead를 사용하는 것을 보았을 때 그 가정을했습니다. tbody가 없다면, 그것을 더해보십시오. – rkw

0

.그런 식으로 $(function(){})가 다시 트리거됩니다.

+0

죄송합니다. 어떻게 또는 어떻게 해야할지 이해하지 못합니까? 설명? – user1096685

+0

일부 html 요소를 아약스에 의해로드 할 때 함수는 새로 추가 된 항목에 대한 이벤트를 발생시키지 않습니다.이 상황을 해결하려면 다시 이벤트를 초기화해야하며 내 선택은 이벤트를 새로로드해야합니다. document.ready의 ed 페이지 – Yorgo