2012-06-01 2 views
1

아래 기능을 버튼으로 지정하고 싶지만 기능상 'location.href'부분이 작동하지 않습니다. 단추에서 div로 변경하면 문제가 단추와 같아 보입니다.location.href가 버튼과 함께 작동하지 않습니다.

어떻게 작동하지 않으며 해결 방법이 있습니까? (실제로 버튼을 사용하고 싶습니까?)

<button id="back">Cancel</button> // Doesn't work 
<div id="back">Cancel</div> // Works 

    $('#back').click(function(){ 
     var imageId = $('#id').attr('href'); 
     var id = imageId.split('/'); 
     location.href = '/blog/' + id[3]; 
    }); 
+0

DOM에 ID가 "id"인 요소가 있습니까? – Shyju

+1

그가 없었다면 console.log (...)도 작동하지 않을 것입니다. 이 방법이 효과가 없을 이유는 없습니다. 같은 엘리먼트 ('id '를 공유하는 엘리먼트 모두)를 문서에 동시에 두지 않는 한. JS 피들 (jjfiddle.net /)에서 재현 할 수 있습니까? –

답변

1

귀하의 문제는 버튼 아니다, 문제는 사실이다 당신은 link 또는 button처럼 디폴트의 동작을 가지는 요소에 클릭을 바인딩 할 때 브라우저는 스크립트를 실행하지만 처음에는 기본 동작을 따르기 시작합니다.

당신이 중 하나return false; 트리거링에서 기본 동작을 방지하고, 또한 최대 거품에 요소와 관련된 다른 작업을 방지하기 위해 사용 :이 작업 Fiddle Example를 참조

!

$('#back').click(function(){ 
    return false; // prevent the regular click action for the element 
    alert('bubu'); // this will not run 
}); 

또는 당신은 단지 기본 동작을 방지하지만 요소와 관련된 다른 작업을 수행 할 수.preventDefault();를 사용하여이 작업 Fiddle Example를 참조

을!

$('#back').click(function(event){ 
    event.preventDefault(); // prevent the regular click action for the element 
    alert('bubu'); // this will run 
}); 

주제에 대한 유용한 정보가 있습니다. here!

0

클래스 문제가 아닌 ID가 좋아 보입니까? ID로이 예제를 시도했지만 작동하지 않았지만 클래스로 전환 했으므로 괜찮 았습니다.

http://jsfiddle.net/rexzc/

+0

고마워, 나는 실제로 이드와 함께 일하게했다. 그러나 'location.href'부분은 그렇지 않습니다. – holyredbeard

1

좋아, 내가 직접 해결하기 위해 관리. 문제는 분명히 'preventDefault();'를 추가해야한다는 것입니다. 버튼을 사용하여 'location.href'를 작동 시키려면

내 수정 현재 작업 코드는 다음과 같습니다

$('#back').click(function(e){ 
     e.preventDefault(); 
     var imageId = $('#id').attr('href'); 
     var id = imageId.split('/'); 
     location.href = '/blog/' + id[3]; 
    }); 
0

버튼을 클릭하면 양식이나 문서를 제출하려고 시도하지만 type = 'button'속성을 사용하면이를 방지 할 수 있습니다.

관련 문제