حلقة من خلال <اختر <وبناء مجموعة في شكل: "VALUE1"، "و value2"، "value3"
-
04-07-2019 - |
سؤال
وأنا أتساءل عما إذا كان أي شخص يمكن أن تشير إلى أن أفضل طريقة للحلقات من خلال جميع <option>
الصورة في عنصر <select>
مع مسج، وبناء صفيف.
وعلى سبيل المثال.
وبدلا من ما يلي، حيث مرت على خصوصيات السلسلة إلى autoCompleteArray ()،
$("#CityLocal").autocompleteArray(
[
"Aberdeen", "Ada", "Adamsville", "Zoar" //and a million other cities...
],
{
delay:10,
minChars:1,
matchSubset:1,
onItemSelect:selectItem,
onFindValue:findValue,
autoFill:true,
maxItemsToShow:10
}
);
و... ولست بحاجة لحلقة من خلال جميع <options>
في <select>
ودفعهم إلى صفيف، ويمر هذا المتغير الصفيف إلى وظيفة بدلا من سلسلة طويلة.
وعلى سبيل المثال،
$("#CityLocal").autocompleteArray(
[
MyBigArrayOfOptions
],
{
delay:10,
minChars:1,
matchSubset:1,
onItemSelect:selectItem,
onFindValue:findValue,
autoFill:true,
maxItemsToShow:10
}
);
وسأكون ممتنا لو تفضلتم اقتراح كيفية دفع الاشياء في صفيف بالشكل الصحيح. لقد ساسيد حد كبير جزءا من حلقات وظيفة أخرى على هذا الموقع.
وشكرا.
المحلول
وهذا يجب أن تعمل:
$(document).ready(function(){
// array of option elements' values
var optionValues = [];
// array of option elements' text
var optionTexts = [];
// iterate through all option elements
$('#sel > option').each(function() {
// get value/text and push it into respective array
optionValues.push($(this).val());
optionTexts.push($(this).text());
});
// test with alert
alert(optionValues);
alert(optionTexts);
});
وبالنظر إلى أن عنصر select
لديه ID <م> قانون حالة الطوارئ م>.
نصائح أخرى
ويمكن أن تكون وظيفة jQuery.map ما كنت تبحث عن . رمز أدناه سيخلق صفيف يحتوي على كافة القيم أو قيم نصية للخيارات <select>
.
var values = jQuery.map(jQuery("#select")[0].options, function(option)
{
return option.value;
});
var texts = jQuery.map(jQuery("#select")[0].options, function(option)
{
return option.innerHTML;
});
وكل ما عليك فعله هو تمرير مجموعة كمعلمة الأول دون الأقواس. بين قوسين خلق مجموعة جديدة، ولكن لا تحتاج للقيام بذلك لأنك تمر بالفعل صفيف. مجرد القيام به:
$("#CityLocal").autocompleteArray(
MyBigArrayOfOptions,
{
delay:10,
minChars:1,
matchSubset:1,
onItemSelect:selectItem,
onFindValue:findValue,
autoFill:true,
maxItemsToShow:10
}
);
إذا فهمت سؤالك corrently، يجب التعليمات البرمجية التالية تفعل ما تحتاج:
myFunction($("#my-select option"));
وإخراج الاستعلام هو بالفعل مجموعة من الخيارات التي هي من نسل حدد، لذلك لا تحتاج لدفعهم إلى مجموعة أخرى. بدلا من ذلك، إذا لم يكن لديك تحديد الهوية، ولكن لديك عنصر DOM:
myFunction($("option", theSelect));
وسد هذه الفكرة مرة أخرى في التعليمات البرمجية:
$("#CityLocal").autocompleteArray(
$("option", theSelect),
{
delay:10,
minChars:1,
matchSubset:1,
onItemSelect:selectItem,
onFindValue:findValue,
autoFill:true,
maxItemsToShow:10
}
);