문제

3830 개의 요소가있는 웹 페이지에 드롭 다운이 있습니다. 나는 과도하지만 무엇이든 알고 있습니다.

jQuery에서 나는 명령문을 사용하여 선택한 옵션 값을 얻습니다.

$ ( "#InstitutionCombo : selected") .val ();

선택이 발견되기 전에 눈에 띄는 일시 정지가 있습니다. 해당 값을 얻으면 페이지의 텍스트 상자에 삽입하므로 얼마나 빨리 알고 있습니다. 또한 Firebug에서 중단 점을 사용하여 확인했습니다.

내가 구식 학교에 가서이 JavaScript를 사용한다면 :

var div = document.getElementById ( "MainDiv");
var select = div.getElementsByTagName ( "select") [0];
var ix = select.selectedIndex;
var instid = select.options [ix] .Value;

이 속도는 순간입니다.

숫자가 너무 높아질 때 선택한 선택기를 너무 느리게 만드는 jQuery에 상속되는 것이 있습니까? 내 스크립트에서 jQuery를 고수하고 싶습니다. 누군가 jQuery에서 선택한 옵션을 찾는 속도를 높이는 제안이 있습니까?

감사,

크레이그

도움이 되었습니까?

해결책

선택 상자의 val을 얻을 때 선택된 다음을 호출 할 필요가 없습니다.

기본 동작은 선택된 index를 얻는 것입니다

$( "#institutionCombo").val();

주석에 언급 된 바와 같이, 해당 옵션의 텍스트에 액세스 해야하는 경우 사용할 수 있습니다.

$( "#institutionCombo option[value=" + $( "#institutionCombo").val(); + "]").text();

당신이 알고 있다면 텍스트 속성이 필요하고 값과 다릅니다. 선택한 index를 직접 사용하기를 원할 수도 있습니다.

var combo = $("#institutionCombo").get(0); 
combo = combo ? combo : {selectedIndex: -1}; // handle no combo returned
if (combo.selectedIndex < 0)
  return; // nothing selected
$('#institutionCombo option:eq(' + combo.selectedIndex + ')').text()

다음은 jQuery 소스 (v1.3)의 스 니펫입니다.

val: function( value ) {
    // ...  
    // We need to handle select boxes special
    if ( jQuery.nodeName( elem, "select" ) ) {
        var index = elem.selectedIndex,
            values = [],
            options = elem.options,
            one = elem.type == "select-one";

        // Nothing was selected
        if ( index < 0 )
            return null;

        // Loop through all the selected options
        for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
            var option = options[ i ];

            if ( option.selected ) {
                // Get the specifc value for the option
                value = jQuery(option).val();

                // We don't need an array for one selects
                if ( one )
                    return value;

                // Multi-Selects return an array
                values.push( value );
            }
        }

        return values;  
    // ...  
},

당신이 호출 할 때 : 선택한 선택한 선택기는 모든 선택 요소를 통해 루프가 설정 될 .Selected 속성을 찾는 사망자를 설정하고 배열을 반환합니다. 어느 쪽이든 이렇게하면 모든 혐의를 반복 할 것이므로 그렇게하지 마십시오.

다른 팁

당신은 이것을 할 수 있습니다 :

var ix = $ ( "#institutioncombo") .attr ( "selectedIndex");

var value = $ ( "#institutionCombo 옵션 : EQ (" + ix + ")") .val ();

그러나 그것은 당신이 구식 코드에서 효과적으로하고있는 일입니다.

위에서하고있는 일이 jQuery 코드가 선택한 선택 사항이라고 생각했기 때문에 눈에 띄는 지연이 있다는 것이 놀랍습니다.

그렇지 않으면 지연을 일으키는 구문 오류인지 궁금합니다.

$ ( "#InstitutionCombo 옵션 : selected") .val ();

(주 옵션 : 선택된 대 : 선택)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top