سؤال

لدي منسدلة في صفحة ويب بها عناصر 3830 في ذلك. أنا أعرف، المفرط ولكن أيا كان.

في jQuery أحصل على قيمة الخيار المحدد باستخدام العبارة:

$ ("#institutioncombo: محدد") .val ()؛

هناك وقفة ملحوظة قبل العثور على الاختيار. بمجرد الحصول على هذه القيمة، أدرجها في مربع نص على الصفحة، لذلك أعرف مدى السرعة. بالإضافة إلى أنني قمت بفحصها باستخدام نقاط التوقف في Firebug.

إذا ذهبت إلى المدرسة القديمة واستخدم هذه الجافا سكريبت:

var div = document.getelementbyid ("Maindiv")؛
var حدد = div.getelementsBytagname ("حدد") [0]؛
var ix = select.selectedindEx؛
var instid = select.aptions [ix] .value؛

هذه السرعة هي إنزوال.

هل هناك شيء يرث في مسج يجعل: محدد محدد بطيء عندما تصبح الأرقام عالية جدا؟ أرغب في الالتزام بجائق jQuery في جميع أنحاء البرامج النصية، هل لدى أي شخص اقتراح لتسريع العثور على الخيار المحدد في JQUERY؟

شكرا،

كريج

هل كانت مفيدة؟

المحلول

ليست هناك حاجة لاستدعاء: حدد عند الحصول على Val من مربع تحديد.

السلوك الافتراضي هو الحصول على SELATINDEX

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

كما لوحظ في التعليق، إذا كنت بحاجة إلى الوصول إلى نص هذا الخيار الذي يمكنك استخدامه

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

على الرغم من أنك إذا كنت تعرف أنك بحاجة إلى خاصية النص وتختلف عن القيمة التي قد ترغب فقط في استخدام selectedindex مباشرة.

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()

هنا هو مقتطف من مصدر مسج (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;  
    // ...  
},

عند استدعاء: المحدد المحدد الذي يسير في حلقة من خلال جميع عناصر المحدد التي تبحث عن الخاصية. تحديد الخاصية المراد تعيينها وسوف تعيد مجموعة من أي. وفي كلتا الحالتين التي تقوم بها هذا، ستقوم بحلقة جميع منكرات، لذلك لا تفعل ذلك.

نصائح أخرى

يمكنك القيام بذلك:

var ix = $ ("#Institutioncombo") .attr ("selectedIndex")؛

var value = $ ("#institutioncombo الخيار: EQ (" + ix + ")") .val ()؛

ولكن، هذا بفعالية ما تفعله في قانون المدرسة القديمة.

لقد فوجئت بوجود تأخير ملحوظ، لأنني كنت أعتقد أن ما أقوم به أعلاه هو ما يفعله رمز مسج من أجل: محدد المحدد المحدد.

خلاف ذلك، أتساءل عما إذا كان خطأ بناء الجملة يسبب التأخير، يجب عليك القيام به

$ ("#institutioncombo الخيار: محدد") .val ()؛

(ملاحظة ملاحظة: VS المحدد: محدد)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top