තෝරාගත් කොටුවක ඇති සියලුම විකල්ප ඉවත් කර එක් විකල්පයක් එකතු කර jQuery සමඟ එය තෝරා ගන්නේ කෙසේද?


1087

මූලික jQuery භාවිතා කරමින්, ඔබ තෝරාගත් කොටුවක ඇති සියලුම විකල්ප ඉවත් කරන්නේ කෙසේද, ඉන්පසු එක් විකල්පයක් එකතු කර එය තෝරා ගන්නේ කෙසේද?

මගේ තෝරාගත් කොටුව පහත දැක්වේ.

<Select id="mySelect" size="9"> </Select>

සංස්කරණය කරන්න: දම්වැල් දැමීම සඳහා පහත කේතය ප්‍රයෝජනවත් විය. කෙසේ වෙතත්, (ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හි) .val('whatever')එකතු කළ විකල්පය තෝරාගෙන නැත. (මම යන දෙකම එකම 'වටිනාකම' භාවිතා කළ .appendසහ .val.)

$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');

සංස්කරණය කරන්න: මෙම කේතය අනුකරණය කිරීමට එය ලබා ගැනීමට උත්සාහ කරමින්, පිටුව / පෝරමය නැවත සකසන සෑම අවස්ථාවකම මම පහත කේතය භාවිතා කරමි. මෙම තෝරාගත් කොටුව ජනාවාස වී ඇත්තේ රේඩියෝ බොත්තම් සමූහයකි. .focus()සමීප විය, නමුත් විකල්පය එය මෙන් තෝරාගත් බවක් නොපෙන්වයි .selected= "true". මගේ පවතින කේතයේ කිසිවක් වැරදියි - මම උත්සාහ කරන්නේ jQuery ඉගෙන ගැනීමටයි.

var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";

සංස්කරණය කරන්න: තෝරාගත් පිළිතුර මට අවශ්‍ය දේට සමීප විය. මෙය මට ප්‍රයෝජනවත් විය:

$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;

නමුත් පිළිතුරු දෙකම මගේ අවසාන විසඳුමට මග පෑදීය ..

Answers:


1718
$('#mySelect')
    .find('option')
    .remove()
    .end()
    .append('<option value="whatever">text</option>')
    .val('whatever')
;

3
icknickf: මට ඇත්තේ එකම ගැටලුවකි, නමුත් ඩ්‍රොප් ඩවුන් වෙනස් කිරීමකට වඩා මට පිරික්සුම් කොටු කට්ටලයක් එක් කිරීමට අවශ්‍ය නමුත් මගේ පිරික්සුම් කොටු පැමිණෙන්නේ xml වලින්. මෙය ක්‍රියාත්මක නොවේ
defau1t

10
ඔබට / attr / text වැනි විකල්පයද බිඳ දැමිය හැකි බව සලකන්න:.append($("<option></option>").attr("value", '123').text('ABC!')
බ්‍රොක් හෙන්ස්ලි

1
Ro බ්රොක්හෙන්ස්ලි, මෙම පිළිතුරේ සැබෑ අලංකාරය අවසානය () ශ්‍රිතය සමඟ සංයුක්තව දම්වැල දැමීම බව මම විශ්වාස කරමි. ඔබේ යෝජනාව ද ක්‍රියාත්මක වනු ඇත. JQuery API ප්‍රලේඛනයෙන්: "jQuery හි බොහෝ DOM සංචලන ක්‍රම ක්‍රියාත්මක වන්නේ jQuery වස්තු නිදසුනක් මත වන අතර වෙනස් එකක් DOM මූලද්‍රව්‍ය සමූහයකට ගැලපෙන නව එකක් නිපදවයි. මෙය සිදු වූ විට, එය නව මූලද්‍රව්‍ය සමූහයක් තොගයක් මතට තල්ලු කිරීමක් මෙනි. සෑම වස්තු පෙරහන් ක්‍රමයක්ම නව මූලද්‍රව්‍ය කට්ටලයක් තොගයට තල්ලු කරයි. අපට පැරණි මූලද්‍රව්‍ය කට්ටලයක් අවශ්‍ය නම්, අපට අවසානය () භාවිතා කර කට්ටල තොගයෙන් ඉවතට ගෙන යා හැකිය.
ඇන්තනි මේසන්

1
මගේ මෙනුව නැවත ගොඩනඟා ගැනීමට සහ iOS සඳහා PhoneGap හි jQuery ජංගම දුරකථනයේ තෝරාගත් විකල්පය වෙනස් කිරීමට මට හැකි එකම ක්‍රමය මෙයයි. පසුව මෙනුව නැවුම් කිරීම ද අවශ්‍ය විය.
xited

3
Ro බ්රොක්හෙන්ස්ලි ඔබට මෙතරම් දුරක් යා හැකිය.append($("<option></option>", {'value':'123'}).text('ABC!')
vahanpwns

715
$('#mySelect')
    .empty()
    .append('<option selected="selected" value="whatever">text</option>')
;

34
කුතුහලයෙන් යුතුව, 'සොයා ගැනීම' වඩා 'හිස්' වේගවත්ද? පෙනෙන ආකාරයට - 'සොයා ගැනීම' තේරීම් කාරකයක් භාවිතා කරන අතර 'හිස්' යනු තිරිසන් බලය මූලද්‍රව්‍යය හිස් කරයි.
ඩෑන් එස්පර්සා

52
An ඩැන් එස්පර්සා මම ඔබව jsperf බවට පත් කළෙමි; empty()ඇත්තෙන්ම වේගවත් හැරී;) jsperf.com/find-remove-vs-empty
vzwick

මෙම විසඳුම සමඟ මට තදබල දෝෂයක් ඇතිවිය. එහි ජනගහන කොටස කමක් නැත, නමුත් මම වටිනාකමක් තෝරා ගැනීමට උත්සාහ කරන විට (දිනකට මගේ නඩුවේදී), මට ලොග් අගය කොන්සෝලය කළ හැකිය, නමුත් තෝරාගත් ක්ෂේත්‍රයේ පෙන්වා ඇති අගය පළමු අගයේම පවතී .... මට පුළුවන් එය විසඳන්නේ නැත: /
ටකාස් සොල්ට්

5
@ TakácsZsolt සමහර විට ඔබ මැට්ගේ පිළිතුරෙහි .val('whatever')මෙන් දාමයේ අවසානයේ එකතු කළ යුතුය .
කොඩෝස් ජොන්සන්

.empty () ද්‍රව්‍යකරණය සමඟ ක්‍රියා කරන අතර .remove () ක්‍රියා නොකළේය

132

සරල ජාවාස්ක්‍රිප්ට් භාවිතා නොකරන්නේ ඇයි?

document.getElementById("selectID").options.length = 0;

8
සියලු විකල්ප ඉවත් කිරීම සඳහා ඇති සරලම විසඳුම මෙය බව මම එකඟ වෙමි, නමුත් එයට පිළිතුරු සපයන්නේ ප්‍රශ්නයෙන් අඩක් පමණි ...
Elezar

3
මෙය මතක කාන්දුවක් ඇති නොකරන්නේද? විකල්ප අංග දැන් ප්‍රවේශ කළ නොහැකි නමුත් තවමත් වෙන් කර ඇත.
සයිනෙටෙක්

79

ඔබේ ඉලක්කය නම් පළමු විකල්පය හැර සෙසු විකල්පයන් තේරීමෙන් ඉවත් කිරීමයි (සාමාන්‍යයෙන් 'කරුණාකර අයිතමයක් තෝරන්න' විකල්පය) ඔබට භාවිතා කළ හැකිය:

$('#mySelect').find('option:not(:first)').remove();

10
මෙය පිළිතුර විය යුතුය. අනෙක් සියල්ලන්ම හිතාමතාම පළමුවැන්න ඉවත් කළේ පසුව එය ප්‍රතිනිර්මාණය කිරීමේ අදහසින්, මා අකමැති; එයින් කියැවෙන්නේ ඔවුන් පළමු විකල්පය කොතැනක හෝ පළමුව ගබඩා කර ඇති බවයි.

76

මට IE7 හි දෝෂයක් තිබුණි (IE6 හි හොඳින් ක්‍රියා කරයි) ඉහත jQuery ක්‍රම භාවිතා කිරීමෙන් DOM හි තේරීම ඉවත් වනු ඇති නමුත් තිරය මත නොවේ. IE සංවර්ධක මෙවලම් තීරුව භාවිතා කිරීමෙන් තේරීම ඉවත් කර ඇති බවත් නව අයිතම ඇති බවත් මට තහවුරු කළ හැකි නමුත් දෘශ්‍යමය වශයෙන් තේරීම තවමත් පැරණි අයිතම පෙන්වයි - ඔබට ඒවා තෝරා ගැනීමට නොහැකි වුවද.

විසඳුම වූයේ jQuery වෙනුවට ඉවත් කිරීම සඳහා සම්මත DOM ක්‍රම / නිසි පරිදි (පෝස්ටරයේ මුල් පිටපත) භාවිතා කිරීමයි - විකල්ප එකතු කිරීමට තවමත් jQuery භාවිතා කරයි.

$('#mySelect')[0].options.length = 0;

6
මට මෙම ක්‍රමය ie6 තුළද භාවිතා කිරීමට සිදුවිය.
කෝඩ් කමාන්ඩර්

2
මෙම ක්‍රමය වඩා කුඩා කාර්ය සාධනයක් (1% ක් පමණ) බවට පත්වේ
vzwick

3
+1 මෙය වඩාත්ම කියවිය හැකි (මගේ මතය අනුව) සහ jsPerf සබැඳියේ (zvzwick සම්බන්ධිත) පිළිගත් පිළිතුර 34% මන්දගාමී විය (ඔපෙරා 20)
මෝර්වෙල්

38

"එකක් එකතු කර එය තෝරන්න" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්දැයි හරියටම විශ්වාස නැත, මන්ද එය කෙසේ හෝ පෙරනිමියෙන් තෝරා ගනු ඇත. එහෙත්, ඔබ එකකට වඩා එකතු කළහොත් එය වඩාත් අර්ථවත් වනු ඇත. වැනි දෙයක් ගැන:

$('select').children().remove();
$('select').append('<option id="foo">foo</option>');
$('#foo').focus();

"සංස්කරණය කරන්න" සඳහා ප්‍රතිචාරය : "මෙම තෝරාගත් කොටුව ජනාවාස වී ඇත්තේ රේඩියෝ බොත්තම් සමූහයක්" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද යන්න පැහැදිලි කළ හැකිද? ඒ <select>මූලද්රව්යය (නීත්යානුකූලව) අඩංගු විය නොහැක <input type="radio">අංග.


27
$('#mySelect')
    .empty()
    .append('<option value="whatever">text</option>')
    .find('option:first')
    .attr("selected","selected")
;

2
අපි තවමත් IE6 භාවිතා කරන අතර මෙම ක්‍රමය ක්‍රියාත්මක නොවීය. කෙසේ වෙතත්, එය එෆ්එෆ් 3.5.6
ජේ කෝබට්

3
තෝරාගත් වෙනස අවුලුවාලීම සඳහා .change () අවසානයට එකතු කිරීමට සිදුවනු ඇත
හේඩන් චේම්බර්ස්

22
$("#control").html("<option selected=\"selected\">The Option...</option>");

12

මට ලැබුණු පිළිතුරු වලට ස්තූතියි, මගේ අවශ්‍යතාවන්ට ගැලපෙන පහත සඳහන් දෑ නිර්මාණය කිරීමට මට හැකි විය. මගේ ප්‍රශ්නය තරමක් අපැහැදිලි විය. පසු විපරමට ස්තූතියි. මගේ අවසාන ගැටළුව විසඳනු ලැබුවේ මට තෝරා ගැනීමට අවශ්‍ය විකල්පයට “තෝරාගත්” ඇතුළත් කිරීමෙනි.

$(function() {
  $('#mySelect').children().remove().end().append('<option selected value="One">One option</option>') ; // clear the select box, then add one option which is selected
  $("input[name='myRadio']").filter( "[value='1']" ).attr( "checked", "checked" ); // select radio button with value 1
  // Bind click event to each radio button.
  $("input[name='myRadio']").bind("click",
                                  function() {
    switch(this.value) {
      case "1":
        $('#mySelect').find('option').remove().end().append('<option selected value="One">One option</option>') ;
        break ;
      case "2":
        $('#mySelect').find('option').remove() ;
        var items = ["Item1", "Item2", "Item3"] ; // Set locally for demo
        var options = '' ;
        for (var i = 0; i < items.length; i++) {
          if (i==0) {
            options += '<option selected value="' + items[i] + '">' + items[i] + '</option>';
          }
          else {
            options += '<option value="' + items[i] + '">' + items[i] + '</option>';
          }
        }
        $('#mySelect').html(options);   // Populate select box with array
        break ;
    } // Switch end
  } // Bind function end
                                 ); // bind end
}); // Event listener end
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>One<input  name="myRadio" type="radio" value="1"  /></label>
<label>Two<input name="myRadio"  type="radio" value="2" /></label>
<select id="mySelect" size="9"></select>


8

Html නව දත්ත වලට වෙනස් කිරීම ගැන.

$('#mySelect').html('<option value="whatever">text</option>');

තවත් උදාහරණයක්:

$('#mySelect').html('
    <option value="1" selected>text1</option>
    <option value="2">text2</option>
    <option value="3" disabled>text3</option>
');

8
  1. පළමුවෙන්ම සියලු පිටවන විකල්පයන් ඉවත් කරන්න පළමු එක ක්‍රියාත්මක කරන්න (- තෝරන්න--)

  2. ලූප් එකින් එක භාවිතා කරමින් නව විකල්ප අගයන් එකතු කරන්න

    $('#ddlCustomer').find('option:not(:first)').remove();
    for (var i = 0; i < oResult.length; i++) {
       $("#ddlCustomer").append(new Option(oResult[i].CustomerName, oResult[i].CustomerID + '/' + oResult[i].ID));
    }

7

මම පහත වැනි දෙයක් අන්තර්ජාලයේ සොයාගෙන ඇත. මගේ තත්වය වගේ විකල්ප දහස් ගණනක් සමඟ මෙම ගොඩක් වේගවත් වඩා .empty()හෝ .find().remove()සඟවන්න සිට.

var ClearOptionsFast = function(id) {
    var selectObj = document.getElementById(id);
    var selectParentNode = selectObj.parentNode;
    var newSelectObj = selectObj.cloneNode(false); // Make a shallow copy
    selectParentNode.replaceChild(newSelectObj, selectObj);
    return newSelectObj;
}

වැඩි විස්තර මෙහි .



7
$("#id option").remove();
$("#id").append('<option value="testValue" >TestText</option>');

කේතයේ පළමු පේළියේ තෝරාගත් කොටුවක ඇති සියලුම විකල්ප ඉවත් කරනු ඇත.

කේතයේ දෙවන පේළිය නිශ්චිත අගය ("testValue") සහ පෙළ ("TestText") සමඟ විකල්පය එක් කරයි.


මෙය ප්‍රශ්නයට පිළිතුරු දිය හැකි අතර, එය එයට පිළිතුරු සපයන ආකාරය පිළිබඳව ඔබ පැහැදිලි කිරීමක් ලබා දෙන්නේ නම් එය වඩාත් ප්‍රයෝජනවත් වනු ඇත .
නික්

6

මොරෙටෝගේ පිළිතුර මත පදනම්ව, මෙය කියවීමට සහ තේරුම් ගැනීමට ටිකක් පහසු ය:

$('#mySelect').find('option').not(':first').remove();

නිශ්චිත අගයක් ඇති එකක් හැර අනෙක් සියලුම විකල්ප ඉවත් කිරීමට, ඔබට මෙය භාවිතා කළ හැකිය:

$('#mySelect').find('option').not('[value=123]').remove();

එකතු කිරීමේ විකල්පය දැනටමත් තිබේ නම් මෙය වඩා හොඳය.


5

තෝරාගත් ටැගයෙන් සියලු විකල්ප ඉවත් කිරීමට එක් පේළියක් පමණක් ඇති අතර ඔබට ඕනෑම විකල්පයක් එකතු කළ පසු විකල්ප එකතු කිරීමට දෙවන පේළියක් සාදන්න.

$('.ddlsl').empty();

$('.ddlsl').append(new Option('Select all', 'all'));

4

තෝරාගත් විකල්පය ඉවත් කිරීම සඳහා jquery prop () භාවිතා කරයි

$('#mySelect option:selected').prop('selected', false);

1
.prop () ක්‍රියාත්මක වන්නේ jQuery 1.6+ තුළ පමණි. JQuery 1.5- සඳහා, .attr () භාවිතා කරන්න
Agi Hammerthief

4

මෙය ඔබගේ පවතින mySelect නව mySelect සමඟ ප්‍රතිස්ථාපනය කරනු ඇත.

$('#mySelect').replaceWith('<Select id="mySelect" size="9">
   <option value="whatever" selected="selected" >text</option>
   </Select>');

4

Html ආදේශ කිරීමෙන් ඔබට සරලව කළ හැකිය

$('#mySelect')
.html('<option value="whatever" selected>text</option>')
.trigger('change');

2
  • වස්තුවක එකතු කළ යුතු විකල්ප අගයන් සුරකින්න
  • තෝරාගත් ටැගය තුළ පවතින විකල්ප ඉවත් කරන්න
  • ලැයිස්තු වස්තුව නැවත සැකසීමට සහ අපේක්ෂිත තෝරාගත් ටැගයට අන්තර්ගතය එකතු කරන්න

var listToAppend = {'':'Select Vehicle','mc': 'Motor Cyle', 'tr': 'Tricycle'};

$('#selectID').empty();

$.each(listToAppend, function(val, text) {
    $('#selectID').append( new Option(text,val) );
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


2

මම මෙම කේතය Select2 - Clearing Selections හි දුටුවෙමි

$('#mySelect').val(null).trigger('change');

Select2 නොමැතිව වුවද මෙම කේතය jQuery සමඟ හොඳින් ක්‍රියා කරයි


1

එය ක්‍රියාත්මක වේ යැයි සිතමි

$('#myselect').find('option').remove()
.append($('<option></option>').val('value1').html('option1'));

එය වැඩ කරන්නේ නම් එය ක්‍රියාත්මක වේ නම් විකල්පය මට දෙවැන්න තෝරාගත නොහැක
අන්බුරාජ්_එන්

0
var select = $('#mySelect');
select.find('option').remove().end()
.append($('<option/>').val('').text('Select'));
var data = [{"id":1,"title":"Option one"}, {"id":2,"title":"Option two"}];
for(var i in data) {
    var d = data[i];
    var option = $('<option/>').val(d.id).text(d.title);
    select.append(option);
}
select.val('');

0

උත්සාහ කරන්න

mySelect.innerHTML = `<option selected value="whatever">text</option>`

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.