2012-04-09 1 views
0

jquery에서 작동하지 않는 버튼이 있습니다. 버튼은 json 객체를 사용하여 PHP에서 Jquery로 전달됩니다. 이 코드를 테스트하고 해결하기 위해 다른 모든 코드를 제거했습니다. 나는 동일한 링크를 만들고 php의 내 페이지에 놓습니다. 링크를 클릭하면 경고가 나타나고 작동합니다.JQuery 링크 버튼이 PHP에서 반환되지 않지만 작동하지 않습니다.

동일한 버튼에 동일한 버튼이 있지만이 버튼은 PHP에서 json을 통해 Jquery에 전달되었으며 이 div에 추가되었습니다. 이 링크/버튼이 작동하지 않습니까? 왜 이런거야? 둘 다 똑같이 나타난다!

여기

버튼도

$.each(data, function(i, item) { 
content += item; 

}); 
$('#theframe').html(content); 
},'json'); 




//php returned 
$json[] = '<a href="#test">View Post</a>'; 
echo json_encode($json); 

//php button on page 
<a href="#test">View Post</a> 

감사를 시도

//Jquery basic test button for functionality (works if link button is already on HTML page) 
    $("[href='#test']").click(function() {  
    alert("has been clicked"); 
    }); 

//JQuery extract of my code 

var content; 
$.each(data, function(i, item) { 
content += item; 

}); 
$(content).appendTo('#theframe'); 
},'json'); 

PHP

에서 반환

덕분에 무슨 일이 일어나고있는 사람에 관한 조언 해 줄 수 있습니다

희망

모든 게시물의 도움으로 해결되었습니다. 감사합니다. @ Anthony의 예는 프레임 $ ('#frame')을 추가했습니다. (클릭, '[href = "# 테스트"]', 기능 (e) { 경고 ('클릭되었습니다'); }}) ;

+0

답변을 게시 한 사람 덕분에, 많이 배웠던 설명에 감사드립니다.) 감사합니다. @Anthony 나는 당신의 모범을 잘 활용했습니다. – Alan

답변

1

.click() 기능은에 이벤트 처리기를 추가 http://api.jquery.com/on/

것은 당신이 jQuery를 사용 위임의 이전 버전을 사용하는 경우 코드가 실행될 때 존재하는 요소이므로 이후에 동적으로 추가되는 요소에는 영향을 미치지 않습니다. 이 문제를 해결하는 가장 쉬운 방법은 .on() (jQuery 1.7+) 또는 .delegate() (1.7 이전) 함수를 사용하여 이벤트 위임을 설정하는 것입니다. .on() 예는 다음과 같을 것이다 : 그것은 작동하지 않습니다

$('body').on('click', '[href="#test"]', function(e) { 
    alert('has been clicked'); 
}); 
+0

감사의 말을 전하는 분들께 감사드립니다[email protected] 예제를 사용했습니다. – Alan

3

동적으로 추가 된 새 페이지 요소에 클릭 이벤트를 추가하려면 jQuery on() 또는 delegate() 함수를 사용해야합니다.

당신이 jQuery를 1.7를 사용하는 경우 더 큰 당신은()에 사용해야합니다 http://api.jquery.com/delegate/

+0

당신의 도움에 감사드립니다. Erikk – Alan

1

이유는 문서 준비 기능은 한 번 발사한다는 것입니다. 즉, 두 번째 버튼이 ajax를 통해로드 된 후에는 이벤트 핸들러가 연결되지 않습니다.

또는 "라이브" "의"사용해보십시오 :

$("body").on("click", a[href="#target"], function(event){ 
alert("has been clicked"); 
}); 

http://api.jquery.com/on/ < - 문서 도구를위한

http://api.jquery.com/ < "에"- 새 좋아하는 웹 사이트를!

희망이 도움이됩니다.

+0

'.on()'구문은 이미 가지고있는 것과 동일합니다 - 이벤트 위임 구문을 사용해야합니다. 또한'.live()'는 더 이상 사용되지 않습니다 - 당신이 jQuery 버전을 사용하지 않는 한 그것을 사용할 이유가 없으므로 오래된 이벤트에는'.delegate()'가 없습니다. –

+0

@AnthonyGrist는 그것을 지적 해 주셔서 감사합니다! 지금 편집되었습니다 :) – Andbdrew

+0

감사합니다 Andbdrew for your help – Alan

관련 문제