উত্তর:
empty
পদ্ধতিটি ব্যবহার করে আপনি বিদ্যমান বিকল্পগুলি সরিয়ে ফেলতে পারেন এবং তারপরে আপনার নতুন বিকল্পগুলি যুক্ত করতে পারেন:
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").empty().append(option);
যদি কোনও বস্তুতে আপনার নতুন বিকল্প থাকে তবে আপনি এটি করতে পারেন:
var newOptions = {"Option 1": "value1",
"Option 2": "value2",
"Option 3": "value3"
};
var $el = $("#selectId");
$el.empty(); // remove old options
$.each(newOptions, function(key,value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
সম্পাদনা করুন: প্রথমটি ছাড়াও সমস্ত বিকল্প অপসারণের জন্য, আপনি :gt
নির্বাচকটি ব্যবহার করতে পারেন , option
শূন্যের চেয়ে আরও বেশি সূচকযুক্ত সমস্ত উপাদান এবং remove
সেগুলি পেতে:
$('#selectId option:gt(0)').remove(); // remove all options, but not the first
$('#selectId').selectpicker('refresh'); $('#selectId').selectpicker('render');
। অন্যথায় নতুন বিকল্পগুলি আপনার নির্বাচিত তালিকায় দৃশ্যমান হবে না।
$el.append($('<option/>', { value: value, text: key }));
আমি সিএমএসের দুর্দান্ত উত্তরটি দ্রুত jQuery এক্সটেনশনে ফেলেছি:
(function($, window) {
$.fn.replaceOptions = function(options) {
var self, $option;
this.empty();
self = this;
$.each(options, function(index, option) {
$option = $("<option></option>")
.attr("value", option.value)
.text(option.text);
self.append($option);
});
};
})(jQuery, window);
এটি "পাঠ্য" এবং "মান" কীগুলি ধারণ করে এমন একটি সামগ্রীর অ্যারের প্রত্যাশা করে। সুতরাং ব্যবহার নিম্নরূপ:
var options = [
{text: "one", value: 1},
{text: "two", value: 2}
];
$("#foo").replaceOptions(options);
$('#comboBx').append($("<option></option>").attr("value",key).text(value));
যেখানে কম্বোবক্স আপনার কম্বো বাক্স আইডি।
অথবা আপনি ইতিমধ্যে বিদ্যমান অভ্যন্তরীণ এইচটিএমএলকে স্ট্রিং হিসাবে বিকল্পগুলি যুক্ত করতে পারেন এবং তারপরে নির্বাচিত অভ্যন্তরীণ এইচটিএমএলকে নির্ধারণ করতে পারেন।
সম্পাদন করা
আপনার যদি প্রথম বিকল্পটি রাখা এবং অন্য সমস্ত অপসারণ করতে হয় তবে আপনি ব্যবহার করতে পারেন
var firstOption = $("#cmb1 option:first-child");
$("#cmb1").empty().append(firstOption);
কিছু অদ্ভুত কারণে এই অংশ
$el.empty(); // remove old options
সিএমএস সলিউশন থেকে আমার পক্ষে কাজ হয়নি তাই এর পরিবর্তে আমি কেবল এটি ব্যবহার করেছি
el.html(' ');
এবং এটি কাজ করে। সুতরাং আমার ওয়ার্কিং কোডটি এখন এর মতো দেখাচ্ছে:
var newOptions = {
"Option 1":"option-1",
"Option 2":"option-2"
};
var $el = $('.selectClass');
$el.html(' ');
$.each(newOptions, function(key, value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
DOM উপাদান অপসারণ এবং যুক্ত করা বিদ্যমান উপাদানগুলির পরিবর্তনের চেয়ে ধীর।
যদি আপনার বিকল্প সেটগুলির দৈর্ঘ্য একই থাকে তবে আপনি এটির মতো কিছু করতে পারেন:
$('#my-select option')
.each(function(index) {
$(this).text('someNewText').val('someNewValue');
});
যদি আপনার নতুন বিকল্প সেটের আলাদা দৈর্ঘ্য থাকে, আপনি উপরে বর্ণিত কিছু প্রযুক্তি ব্যবহার করে আপনার সত্যিকারের প্রয়োজনীয় খালি বিকল্পগুলি মুছতে / যুক্ত করতে পারেন।
উদাহরণস্বরূপ যদি আপনার এইচটিএমএল কোডটিতে এই কোডটি থাকে:
<select id="selectId"><option>Test1</option><option>Test2</option></select>
আপনার নির্বাচনের ভিতরে বিকল্পের তালিকাটি পরিবর্তন করতে, আপনি এই কোডটি বেলো ব্যবহার করতে পারেন। যখন আপনার নামের নামে নির্বাচন selectId ।
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").html(option);
উপরের এই উদাহরণে আমি কেবলমাত্র একটি নতুন বিকল্প দ্বারা বিকল্পের পুরানো তালিকাটি পরিবর্তন করেছি ।
হাত দিয়ে কাজ করার পুরানো স্কুলটি আমার পক্ষে সবসময়ই ভাল।
নির্বাচনটি পরিষ্কার করুন এবং প্রথম বিকল্পটি ছেড়ে দিন:
$('#your_select_id').find('option').remove()
.end().append('<option value="0">Selec...</option>')
.val('whatever');
যদি আপনার ডেটা কোনও জসন বা যা কিছু থেকে আসে (কেবলমাত্র ডেটা কনক্যাট):
var JSONObject = JSON.parse(data);
newOptionsSelect = '';
for (var key in JSONObject) {
if (JSONObject.hasOwnProperty(key)) {
var newOptionsSelect = newOptionsSelect + '<option value="'+JSONObject[key]["value"]+'">'+JSONObject[key]["text"]+'</option>';
}
}
$('#your_select_id').append( newOptionsSelect );
আমার জসন ওবজেট:
[{"value":1,"text":"Text 1"},{"value":2,"text":"Text 2"},{"value":3,"text":"Text 3"}]
এই সমাধানটি অ্যাজাক্সের সাথে কাজ করার জন্য আদর্শ, এবং একটি ডাটাবেস থেকে জসনে উত্তর দেয়।
যদি আমরা <select>
ক্রমাগত আপডেট করি এবং আমাদের পূর্ববর্তী মানটি সংরক্ষণ করতে হবে:
var newOptions = {
'Option 1':'value-1',
'Option 2':'value-2'
};
var $el = $('#select');
var prevValue = $el.val();
$el.empty();
$.each(newOptions, function(key, value) {
$el.append($('<option></option>').attr('value', value).text(key));
if (value === prevValue){
$el.val(value);
}
});
$el.trigger('change');