2013-08-13 2 views
0

링크를 클릭 한 후 기능을 실행하고 싶습니다.링크를 클릭하여 기능을 실행 하시겠습니까?

기능을 가리키고 싶은 링크는 cancelLink 클래스의 링크입니다. 첫 번째 링크는 예를 들어 첫 번째 링크가 다른 페이지에 매개 변수를 전달하여 AppointmentId를 얻는 방법을 보여주기위한 것입니다.

취소 링크를 클릭하고 현재 페이지에서 기능을 실행하고 싶습니다.

여기 내 링크는 다음과 같습니다

다음
<a href="Invoices/InvoiceCreate.aspx?AppointmentId=${AppointmentId}">Invoice</a>&nbsp;| 
<a href="#" class="cancelLink" data-attr=${AppointmentId}>Cancel</a> 

이다 문서에서 준비가 내 클릭 기능 :

$('a.cancelLink').click(function() { 
    var appointmentId = $(this).attr("data-attr"); 
    //var appointmentId = $(this).attr("appointmentId"); 
    MemberWebService.AppointmentStatusUpdate(appointmentId, 3, function() { 

    window.location = 'AppointmentViewAll.aspx'; 
    }); 
}); 
이 클릭 기능을 입력하지 않습니다

현재 코드, 나는이 어떻게 달성 할 수 있을까?

+0

코드가 좋았습니다. 브라우저 콘솔에 오류가 있습니까? –

+0

@ClaudioRedi 아니요 브라우저 콘솔에 오류가 없습니다. – Pomster

+0

$ ('a.cancelLink'). click (function (e) {e.preventDefault()}); 이것을 쓰고 그것이 효과가 있는지보십시오. 페이지가로드 될 때 – maverickosama92

답변

-1

onclick 메서드를 사용하여 함수를 호출하고 매개 변수를 추가합니다.

<a href="#" onclick="bindCancel(${AppointmentId})">Cancel</a> 

function bindCancel(appointmentId) { 
    MemberWebService.AppointmentStatusUpdate(appointmentId, 3, function() { 

    }); 
} 
+0

나는 in-line/in 마크 업 이벤트 핸들러를 결코 추천하지 않는다. –

0

코드가 괜찮습니다. 다음은 작동하는 plunk입니다. 'console.log ("샘플 테스트"); 클릭 처리기 내부에서 실행 중인지 확인합니다. $ (document) .ready() 안에 코드를 어떻게 래핑했는지 게시 할 수 있습니까?

이렇게 했습니까?

$(document).ready(function() { 
    $('a.cancelLink').click(function() { 
     var appointmentId = $(this).attr("data-attr"); 
     //var appointmentId = $(this).attr("appointmentId"); 
     MemberWebService.AppointmentStatusUpdate(appointmentId, 3, function() { 

     window.location = 'AppointmentViewAll.aspx'; 
    }); 
}); 
}); 
+0

동일한 방법으로 위 코드가 $ (document.ready())에 wrap 된 것과 똑같습니다. – Pomster

+0

브라우저 콘솔에서 $ ('a.cancelLink')를 실행하면 어떻게 되나요? –

0

이 시도 :

$('a.cancelLink').click(function (e) { 
    e.preventDefault(); 
    var appointmentId = $(this).attr("data-attr"); 
    //var appointmentId = $(this).attr("appointmentId"); 
    MemberWebService.AppointmentStatusUpdate(appointmentId, 3, function() { 

    window.location = 'AppointmentViewAll.aspx'; 
    }); 
}); 

나는 그것이 도움이되기를 바랍니다.

+0

고마워, 나는 이것을 시도했다. 그러나 나의 브레이크 포인트는 절대로 .click 함수 안에 들어 가지 않는다. – Pomster

+0

템플릿 설정을 통해 data-attr = $ {AppointmentId}를 설정 하시겠습니까? – maverickosama92

+0

예 링크가 템플릿 안에 있습니다. – Pomster

0

몇 가지 원인이있을 수 있습니다.

$(document).ready(function() { // Only access elements once the DOM is loaded 

    $(document).on('click', 'a.cancelLink', function(event) { // Try using on() instead of click() as you seem to be using some templating for creating the link ("${AppointmentId}"). 

    event.preventDefault(); // Don´t follow the link to # 

    var appointmentId = $(this).data('attr'); // Use data() instead of attr() 
    console.log(event.type, appointmentId); // View your console 

    MemberWebService.AppointmentStatusUpdate(appointmentId, 3, function() { 
     window.location = 'AppointmentViewAll.aspx'; 
    }); 
    }); 

}); 

HTML

<a href="Invoices/InvoiceCreate.aspx?AppointmentId=${AppointmentId}">Invoice</a> 
<a href="#" class="cancelLink" data-attr="${AppointmentId}">Cancel</a> // Use quotes 

자바 스크립트 on()data()를 참조하십시오.

관련 문제