2013-06-13 2 views
0

jquery .prop 함수를 사용하여 속성을 사용하지 않으려 고합니다. i 사용 :
$("#a, #b").prop('disabled', true); 이제 Chrome 개발자 도구에서 확인하면 비활성화 된 속성이 두 요소 모두에 적용되지 않습니다. 내가 하드 코딩 된 상태로 들어갔을 때, 이벤트는 여전히 비활성화 된 것처럼 발사되었습니다.jquery 모든 이벤트 사용 안 함 및 사용 가능

$("#a").click(function(){ 
    alert("ASD"); 
    }); 

여전히 실행됩니다.

+1

어떤 종류의 요소가'# a'와'# b'입니까? 모든 요소가 해당 속성을 지원하지는 않습니다. –

+0

td, img elemetns –

+1

예, 해당 속성을 지원하지 않습니다. 플래그를 사용하거나 이벤트 핸들러를 Y 인드해야합니다. –

답변

3

이미 설명한 바와 같이 disabled 속성은 이미지와 표 셀에서 지원되지 않습니다.

이벤트 처리기의 바인딩을 해제하지 않으려면 플래그를 설정할 수 있습니다. 추가하고 클래스를 제거하는 대신의 경우


Beetroot-Beetroot

$("#a, #b").data('disabled', true); 

// ...  

$("#a").click(function(e){ 
    if ($(this).data('disabled')) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     return; 
     // or just `return false;` instead of explicitly calling the methods 
    } 
    alert("ASD"); 
}); 
자신의 의견에서 좋은 제안을했다 : 그런 다음 핸들러 내부 플래그를 테스트하여 이벤트의 이벤트 핸들러 및 전파를 실행 방지 할 수 있습니다 .data을 사용하면 도 동시에 해당 요소의 스타일을 지정할 수 있습니다..

그것은 매우 유사하게 작동합니다 :

$("#a, #b").addClass('disabled'); 
// and .removeClass or .toggleClass to remove the class 

// ... 

$("#a").click(function(e){ 
    if ($(this).hasClass('disabled')) { 
     // ... 
    } 
    // ... 
}); 
+0

데이터 방식이 마음에 들지만 더 적절한 것 같습니다. –

+0

'return false'는 암시적인'preventDefault'와'stopPropagation'을 유발합니까? – Alnitak

+0

@Alnitak : 예,하지만 저는 명시 적으로 좋아합니다. 적어도이 경우에는. 나는 덧글을 추가했다. 단순화를 위해 +1 –

0

언급 한 요소가 해당 속성을 지원하지 않습니다. 대신 클래스를 토글 할 수 있습니다.

$('#a').click(function() { 
if ($(this).hasClass('yes')) {...} else {...} 
}); 

와 "장애인"#A와 #B에 대한 유효한 속성/프로퍼티 인 경우 클래스

-1

추가/제거,이 시도 :

$("#a, #b").prop("disabled", "disabled"); 

당신은 모든 요소를 ​​비활성화 할 수 없습니다.

+2

인 올바른 방법은 OP와 같습니다 : .prop ('disabled', true) –

+0

@roasted 잘 동작합니다. 왜 당신의 방법은 올바른 방법입니까? –

+1

'disabled'는 불리언 값을 받아들이는 속성이기 때문에. 당신은 HTML * 애트리뷰트 *에 대해 이야기하고 있을지 모르지만, .prop는 애트리뷰트가 아닌 DOM 프로퍼티를 설정하고있다. –

2

"일반"요소가 disabled 속성을 지원하지 않는, 즉, 일반적으로 입력 요소에 사용됩니다.

  1. 등록 취소 .off()
  2. 장소의 모든 이벤트를 수신 및 전파를 방지 할 수있는 요소의 상단에 동일한 크기의 하위 요소마다 하나의 이벤트 핸들러 :

    당신은 몇 가지 옵션이 부모에게.
  3. 진행 여부를 결정하기 위해 이벤트 핸들러가 발사 때 읽을 수있는 플래그를 사용 여부를 옵션 2는 종종에 의해 사용되는

이벤트를 방지하기 위해 오버레이로 전체 창을 포함 대화 상자를 "모달" 페이지에 도달하지 못했습니다.