2017-11-17 4 views
0

Ctrl 키를 누를 필요없이 다중 선택 콤보 상자에서 여러 항목을 선택할 수있는 jQuery 코드가 있습니다.일반 또는 다중 선택 콤보 상자에서 jQuery가 트리거되는지 여부를 감지해야합니다.

이 기능은 작동하지만 마우스로 변경할 수없는 일반 선택 상자를 방해합니다.

원래 jQuery 코드는 다음과 같습니다 물론

(function ($) { 
$(document).ready(function() { 
    $("option").mousedown(function(e) { 
     this.selected = ! this.selected; 
     e.preventDefault(); 
     return false; 
    }); 
}); 
})(jQuery); 

는 $ ("옵션") 선택이 실패 이유입니다뿐만 아니라, 일반 선택 상자에 적용됩니다.

이벤트가 "다중"속성을 가진 선택 상자에 의해 트리거되는지 여부를 감지하려고 시도했지만 방법을 알 수 없습니다. 이 작업을 수행 할 수있는 방법의

(function ($) { 
$(document).ready(function() { 
    $("option").mousedown(function(e) { 
     if($(this).attr('multiple','multiple')) { 
      this.selected = ! this.selected; 
      e.preventDefault(); 
      return false; 
     } 
     else { 
      return true; 
     } 
    }); 
}); 
})(jQuery); 

어떤 아이디어 : 다음은 그 중 하나는 이벤트가 옵션으로 선택하지 트리거되는 것으로, 여러 가지 이유로 작동하지 않는 이유는 무엇입니까?

아, 전 실제 상황에서 다른 멀티 셀렉트에서 동일한 코드가 사용되기 때문에 다중 선택 ID를 포함하고 싶지 않습니다. - 아마도 custom-multiselecthttps://jsfiddle.net/mheumann/3zn76mex/

+1

다음과 같이 모든 다중 선택에서 옵션을 타겟팅하는 방법 :'$ ('select [multiple] option') ' –

+0

그래, 훌륭해! 감사! 왜 답변을 게시하지 않습니까? –

답변

1

당신이 가지고있는 코드에서 .custom-multiselect option 같은 화합물 선택기를 사용할 수 있습니다.

이 선택자는 <select> 내에서 발생하는 모든 <option>multiple 속성으로 표시합니다.

+0

필자는이 옵션을 필자의 경우 더 쉽고 모든 다중 선택 콤보 박스에 자동으로 적용하기 때문에 결국이 옵션을 사용했습니다. –

2

는이 동작을 새로운 CSS 클래스를 적용 할 모든 다중 선택 요소 보내기 여기

는 바이올린입니다. $('select[multiple] option')을 :

은 다음 당신은 당신이 선택을 사용하는 모든 다중 선택의 옵션을 타겟팅 할 수 있습니다 ...

(function ($) { 
    $(document).ready(function() { 
    $(".custom-multiselect option").mousedown(function(e) { 
     this.selected = ! this.selected; 
     e.preventDefault(); 
     return false; 
    }); 
    }); 
})(jQuery); 
+0

이것도 작동합니다! 타이! –