2012-02-28 4 views
1

클릭하면 Unobstrusive microsoft ajax @ Ajax.ActionLink 바인드를 제거하고 싶습니다. 이 같은Unbind @ Ajax.ActionLink 성공 후

뭔가 :

.cshtml :

@Ajax.ActionLink("Edit", "EditDeliveryZones", new { idConnection = ViewBag.idConnection }, new AjaxOptions() { UpdateTargetId = "EditDeliveryZones" }, new { @class = "ajaxdialogopen" }) 

에 javscript :

$('.ajaxdialogopen').one('click', function (event) { 
    $(this).off('click'); // THIS DOESNT WORK 
    this.onclick = null; // THIS DOESN't WORK EITHER 
} 

감사합니다!

답변

1

: 나는 data-ajax 믿는다

$(this).removeAttr('data-ajax'); 

라이브 핸들러가 트리거하는 속성이기 때문에, 아약스 링크로 취급되지 않도록해야 링크에서 제거 더 이상.

+0

이 접근법의 유일한 문제점은 이벤트가 필요한 경우 무엇입니까? 너는 단지 n + 시간을 묶는 것을 원치 않는다. 현재이 정확한 문제가 있습니다. jquery 이벤트가 아니기 때문에 정말로 바인딩을 해제 할 수는 없지만 두 번째 바인딩과 바인딩을 중단하는 방법은 무엇입니까? –

+0

@starfighterxyz : 나는 당신이 말하는 것을 분명히하지 않습니다. 보고있는 행동에 대해 자세하게 설명하고 여기에서 링크를 제공하는 새로운 질문을 만들 수 있습니까? – StriplingWarrior

+0

나는 그 생각을 고맙게 생각하지만, 나는 문자 그대로 OP를 복사하여 붙여 넣을 것이다. 'data-ajax'를 제거하면 Ajax.ActionLink는 더 이상 ajax가 아니며 단순히 휴면 상태의 HTML입니다. 그건 해결책이 아닙니다."내 차에서 제 브레이크가 작동하지 않으므로 사용하지 마십시오!". 여기서 문제는 이벤트가 N + 시간에 묶여 있다는 것입니다. 여기서 N은 부분 페이지를 방문한 횟수입니다. –

0

당신은 마이크로 소프트와 JQuery와 라이브러리를 읽은 후

$('.ajaxdialogopen').click(function(event) { 
    (event.preventDefault) ? event.preventDefault() : event.returnValue = false; 
}); 
+0

'event.stopPropagation();'으로 충분해야합니다. – StriplingWarrior

-1

뭔가를 시도 할 수 있습니다, 그것은 선택이 아닌 요소에 대해 진행하는 라이브 사용합니다. 따라서 선택기를 일치시키지 않으면 (클래스 제거) 이벤트가 더 이상 트리거되지 않습니다.

라이브가 더 이상 사용되지 않는 이유의 유효한 이유 ... Microsoft는 곧 라이브러리를 업데이트합니다. 핸들러에서이 같은 것을 넣어 대해 어떻게

+1

처음에는 '생방송'이 나쁜 생각 인 것처럼 말합니다. 그것들을'on'과'off' 함수와 통합하기로 결정했기 때문에 단지 deprecated되었다. (그들은 'bind'와'unbind '를 동시에 사용하지 않았다는 것을 기억하지?) 이것은 본질적으로 나쁜 접근이 아닙니다. – StriplingWarrior

+0

개인적으로 받아들이지 마라. 나는 그것이 라이브를 비난하는 유효한 이유라고 지적했다. –

+1

죄송합니다. 수비로 나왔습니다. 나는 이것이 대부분 '라이브'를 비난하는 타당한 이유가 아니라는 것을 대부분 지적하려고 노력했다. 'live'의 * 기능 *은 더 이상 사용되지 않았습니다 : 단지 구문을 변경했습니다. 그것은 여전히 ​​일을하는 가장 합법적 인 방법이며 Microsoft가 라이브러리를 업데이트 할 때 이러한 이벤트가 바뀌는 방식을 변경하지는 않습니다. – StriplingWarrior