2011-04-13 3 views
0

왜 fadeOut에 도달 한 기능이 아닙니까? 함수가 실행될 때마다 AJAX를 사용하는 대신 페이지를 새로 고칩니다. 나는 이것이 사소한 질문 일지 모르지만 나는 붙어있다. 어떤 도움이라도 잘 수면을 취할 수 있습니다. 여기 왜이 기능에 도달하지 못합니까?

<script type="text/javascript"> 


function deleterow(id){ 
if (confirm('Are you sure want to delete?')) { 
$.post('delete.php', {id: +id, ajax: 'true' }, 
function(){ 
$("#row_"+id).fadeOut("slow"); 
}); 
} 
} 

</script> 

감사

는 PHP에 의해 HTML 출력입니다 :

<button onclick="deleterow('.$entry['rowid'].')" class="fg-button fg-button-icon-left ui-state-default ui-corner-all"><span class="ui-icon ui-icon-trash"></span></button> 
+2

오류에 대한 귀하의 자바 스크립트 콘솔을 확인하십시오. –

+3

'id : + id'는 오류와 유사합니다. –

+0

따옴표가 3 중첩되어 있다는 사실과 관련이 있습니까? 즉, 등록하지 않은 부분 ""아마도 그 따옴표를 이스케이프 처리합니까? –

답변

3

그것의 난이 어떻게 든 onclick 핸들러에 연결되어 가정하지만, 함수를 호출 코드/HTML을 보지 않고 확실하게 말할 하드 . 따라서 기본 동작 (a 태그의 href 다음)을 방지하지 않으면 해당 페이지를 새로 고칩니다. 핸들러 함수에서 false를 반환하거나 event.preventDefault()을 호출해야합니다.

내가 대신 마크 업 사용하는 것이

: 함수 호출에 하드 코딩을하지 않고도 우리는 우리의 기능에 액세스 할 수 있습니다 (value이 경우)는 DOM의 ROWID를 인코딩하여

<button 
    value="$entry['rowid']" 
    class="fg-delete fg-button fg-button-icon-left ui-state-default ui-corner-all"> 
    <span class="ui-icon ui-icon-trash"></span> 
</button> 

및 핸들러를 눈에 거슬리지 않게하십시오.

// pulling this into a full definition for clarity 
// you could of course just use an anon function inside you $.click call 
function handleDelete(event){ 
    event.preventDefault(); 
    var $this = $(this); 
    var rowId = $this.val(); 
    deleterow(rowId); 
    return false; 
} 


$('button.fg-delete').click(handleDelete); 

데모 : http://jsfiddle.net/eBa7v/1/

+0

네, 맞습니다. 버튼 onclick을 사용하고 있습니다. 나는 preventDefault()를하는 것에 대해 생각했다. 함수 매개 변수를 통해 이벤트를 전달해야합니까? –

+0

예, 이벤트 핸들러는 이벤트 객체를 유일한 인수로 가져옵니다. 그러나 임의의 데이터의 해시를 해당 이벤트 객체 내부로 전달하도록 지정할 수 있습니다. 마크 업을 게시하면 몇 가지 예를들 수 있습니다. – prodigitalson

+1

그냥'return false'; – jcane86

관련 문제