2013-07-04 4 views
0

인터넷에서 나는 많은 것을 검색했고, 정보 옵션을 제외하고 드롭 다운 상자 의 내용 만 삭제하기 위해 미리 정의 된 jquery 라이브러리 함수를 찾을 수 없습니다. 그러나 찾을 수있는 것은 .empty()이며 레이블을 포함한 모든 내용을 비 웁니다. Jquery Lib. 드롭 다운의 내용을 삭제하기위한 기능

은 따라서 나는 아래로 내 자신의 기능을 썼다.,

$.fn.emptyTheContents = function() { 
    var dropDownInfo = $(this).children('option[value=""]').text(); 
    $(this).empty(); 
    $(this).append($('<option/>', { 
     value: "", 
     text: dropDownInfo 
    })); 
}; 

예를 들어, 형태 모든 국가의 변화, 내가 같이 호출합니다.,

$("#state").emptyTheContents(); // Where <select your state> is the common info. 
//Binding of corresponding states using AJAX request. 

내 질문이 그것은이다 정보 옵션을 제외하여 내용 만 비우기위한 드롭 다운 상자의 일반적인 요구 사항입니다. 그러나 왜 그런 라이브러리 기능이 없습니까?

+0

체크 아웃? 첫 번째 옵션을 제외한 모든 옵션을 제거 하시겠습니까? – DON

+0

@DownVoter 닫기 투표 옵션을 선택하시기 바랍니다. –

+0

@DON 예 "Select Select any country"와 같은 첫 번째 정보 옵션 –

답변

1

에 특정 논리를 광범위하게 사용하는 경우을 작성하고 별도의 방법을 사용할 수 있습니다.

그러나 jquery 라이브러리에 포함되지 않은 이유는 무엇입니까? 대답은 라이브러리 디자이너 관점에서 볼 때이 작업은 매우 좁으며 이미 존재하는 라이브러리 함수로 해결할 수 있다는 것입니다.

예 : 라이브러리 디자이너의

$("#state").children('option:not(:first)').remove(); 

목표는 가능한 한 많은 문제를 해결하기 위해 가능한 한 적은 방법을 제공하는 것입니다. 아무도 API 사용법을 기억하지 않으므로 "모든 것을위한 방법"을 원하지 않습니다. 대신, 당신은 유연성과 사용의 용이함 사이의 균형을 찾기 위해 노력하며, 이런 방식으로 결국 일부 해결책이 떨어지게됩니다.

특별히 자바 스크립트 API 디자인에 대한 자세한 내용을 원한다면, 당신은 라벨을 의미하는 일

0

드롭 다운 상자에 대한 설명이 포함 된 option 요소가 있다고 생각합니다. 따라서 첫 번째 것을 제외한 모든 option 요소를 제거하고 싶습니다. 이것은 쉽게 할 수 있습니다 :

$('#state option').slice(1).remove(); 
  • $.fn.sliceArray.prototype.slice가하는 것처럼 선택을 줄일 수 있습니다. .slice(1)는 selection`에서 첫 번째 요소를 제거 "를 의미한다.
  • $.fn.remove
  • 는 DOM에서 선택된 요소를 제거한다.

이 때문에 첫 번째 요소 될 것 아래로의 드롭에 방치. 그것은 그 공통 아니다 이 표준의 jQuery 기능이없는 이유를 정말 요구 사항은 어떤 것입니다. 당신은 아는대로, 할 쉽습니다 아니 최소한으로. 여기에

0

Here is a jsFiddle showing this code.는 하나입니다 ...

$("#state").html("").append("<option value=''>Select Any</option>"); 
+2

새 요소를 만드는 것은이 작업에 대해 매우 느린 방법이며 완전히 불필요합니다. – lonesomeday

관련 문제