كيف يمكنني تسريع jquery: محدد محدد؟
-
23-08-2019 - |
سؤال
لدي منسدلة في صفحة ويب بها عناصر 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 المحدد: محدد)