2013-08-14 4 views
1

PHP의 동적 테이블을 만들었습니다. 행의 모든 ​​이미지에 ID의 특정 URL이 있습니다. 예를 들어ajax append는 javascript가 여러 번 실행되도록합니다.

:

사용자가이 이미지를 클릭하면, 그 동작을 실행한다. 이것은 잘 작동합니다.

두 번째 아약스에서는 이전 url로 colorbox를 다시로드해야합니다. 이것은 또한 작동하지만, 자바 스크립트가 다시로드 된 것 같다 (비록 새로운 값으로)?

$('#cboxLoadedContent img[alt="markmessage"]').live('click', function(){ 
var returnurl = "<?php echo $_SESSION['returnpage']; ?>"; 
var markurl = $(this).attr('id'); 
alert(markurl); 

// Do the action 
$.ajax({ 
    method:'GET', 
    url: markurl, 
    cache:false 
}); 

// Reload colorbox again with previous contenturl. 
$.ajax({ 
     type: 'GET', 
     url: returnurl, 
     dataType: 'html', 
     cache: true, 
     beforeSend: function() { 
       $('#cboxLoadedContent').empty(); 
       $('#cboxLoadingGraphic').show(); 
     }, 
     complete: function() { 
       $('#cboxLoadingGraphic').hide(); 
     }, 
     success: function(data) {    
     $('#cboxLoadedContent').empty(); 
       $('#cboxLoadedContent').append(data); 
     } 
}); 
}); 
</script> 

javascript를 다시 colorbox에 추가하지 못하게 할 방법이 있습니까? ...이 이후에 새로운 URL을 처리하기로했다,

자바 스크립트 비활성화 할 수 없습니다 ...

+0

링크를 클릭 할 때 기본 동작을 방해합니까? 또한'live'는 더 이상 사용되지 않습니다. 대신에'on'을 사용하십시오. 비어있는 대신에 html을 사용하여 내용을 대체 할 수 있습니다. – Orangepill

+0

내가 제안한대로 코드를 편집했지만 문제가 여전히 존재합니다. 생성 된 모든 이미지에 대해 클래스로 'markmessage'를 추가했습니다 ... '$ (document) .on ("클릭", "img.markmessage", function (e) { \t e.preventDefault(); ' – driesken

+0

'.live'는 [deprecated] (http://api.jquery.com/live/)입니다. 대신'.on','one' 또는'.delegate'를 사용하십시오. – asifrc

답변

1

바인딩 간단한 click 이벤트를보십시오. 여기에서는 선택한 요소에만 바인딩하고 새로운 요소에는 바인딩하지 않습니다. 이벤트를 한 번만 실행하려면 one을 사용하십시오.

+0

감사합니다! 해결책 : '$ (document) .one ("click", "img.markmessage", function() {' – driesken

0

I를 내가 (DOM으로 제거 등) 몇 가지 방법을 시도했지만, 아무것도 작동하는 것 같다 없다 어떤 jQuery 버전을 사용하고 계신지 확실하지 않지만 live()은 1.7에서 더 이상 사용되지 않으므로 on()을 사용해 보시기 바랍니다.

2

은 첫 번째 줄에 onelive를 교체하십시오 : $('#cboxLoadedContent img[alt="markmessage"]').one('click', function(){

+0

이것은 아무것도하지 않는 것 같습니다. . – driesken

관련 문제