2012-11-06 2 views
1

나는 documentation of the .on event handler of jQuery을 읽고 있었고 그걸 가지고 놀기 시작했습니다.mousedown 이벤트에서 jquery .on으로 선택하십시오.

< > 요소를 선택하고 multiple 속성을 true로 설정했습니다. 그러나 사용자가 Ctrl 또는 Shift 키를 누르지 않고도 여러 항목을 선택할 수있게하려고합니다.

.on 설명서에 따르면 선택기를 지정하면 해당 이벤트 처리기가 자동으로 추가됩니다. 지정된 셀렉터와 일치하는 해당 컨테이너 내부에 추가 된 모든 새 항목. 내 경우에 따라서

, 내가 예를 들어 목록 상자에서 > 요소를 사용할 수있는 < 옵션을 대체하는 결정할 수 있지만 여전히 해당 이벤트 등을 리 바인드 할 필요없이 이러한 옵션에 대한 동일한 기능을 갖고 싶어

하나는 다음 코드 트릭을 할해야한다고 생각 (이상이어야, 내가 그랬어) : 그 목록 상자의 옵션에 사용자가 클릭, 기본 동작을 취소하고 따라 할 수 있도록

$('#dropdownlist').on('mousedown', 'option', function(e){ 
    e.preventDefault(); 
    $(this).prop('selected', $(this).prop('selected') ? false : true); 
    return false; 
}); 

을 항목이 이미 어떠했는지 선택 여부와 관계없이 선택을 반전합니다.

나는이 문제를 보여주는 작은 바이올린을 만들었습니다 : 그 바이올린에 fiddle

을 예상대로 첫 번째 드롭 다운리스트가 작동하고 있지만, 항목을 교체 할 때 기능이 손실됩니다. 이 기능은 FF & 크롬에서만 작동합니다.

두 번째 드롭 다운 목록은 (이벤트 처리가 현명해야합니다.) Chrome에서 작동하지 않는 것 같습니다 .- 콘솔을 계속 사용할 수 있기 때문에 항목을 바꿀 때 기능이 유지됩니다. 항목을 교체 한 후 항목을 클릭하면 '2'로 기록됩니다.

왜 이런 일이 일어 났는지 설명 할 수 있습니까? 내가 뭔가 잘못하고 있는거야? 올바른 방향으로 나를 가르쳐주세요!

감사합니다.

~ Dirk

답변

0

IE는 옵션 태그 자체의 mousedown 이벤트를 준수하지 않습니다. 선택 태그의 OnChange 이벤트를 사용해야하는데, 이는 사용자가 (또는 내가 원하는) 것이 아닙니다. 나는 너와 똑같은 일을하려고 애썼고 모든 시도에서 멈췄다. 나는 마침내 포기하고 그것을 체크 박스 목록으로 만들었 기 때문에 당신이 여기서하려고하는 것과 같은 행동을 할 수 있기 때문에.

일부 옵션의 경우 this question이 표시되지만 설명하는대로 작동하지는 않습니다.

관련 문제