আমি কীভাবে jQuery ব্যবহার করে একটি ড্রপডাউনলিস্টে বিকল্প যুক্ত করব?


291

প্রশ্নটি হিসাবে, আমি কীভাবে jQuery ব্যবহার করে একটি ড্রপডাউনলিস্টে একটি নতুন বিকল্প যুক্ত করব?

ধন্যবাদ


শুধু কৌতূহলী, কেন এই প্রশ্নটি নিম্নচালিত হয়েছিল? সম্ভবত কারণ এটি কোনও কোড স্নিপেট দেখায় না :)
শশী কাঁথ

উত্তর:


451

কোনও অতিরিক্ত প্লাগইন ব্যবহার না করে,

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
var mySelect = $('#mySelect');
$.each(myOptions, function(val, text) {
    mySelect.append(
        $('<option></option>').val(val).html(text)
    );
});

যদি আপনার কাছে প্রচুর বিকল্প থাকে বা এই কোডটি খুব ঘন ঘন চালানো দরকার হয়, তবে আপনাকে অযথা অনেকবার ডম পরিবর্তন করার পরিবর্তে একটি ডকুমেন্টফ্রেগমেন্ট ব্যবহার করা উচিত । শুধুমাত্র কয়েকটি মুষ্টিমেয় বিকল্পের জন্য, আমি বলব এটির পক্ষে এটি উপযুক্ত নয়।

------------------------------- যুক্ত ------------------ --------------

DocumentFragmentগতি বাড়ানোর জন্য ভাল বিকল্প, তবে আমরা document.createElement('option')আই 6 এবং আই 7 সমর্থন করে না তাই আমরা বিকল্প উপাদান তৈরি করতে পারি না ।

আমরা কী করতে পারি তা হল একটি নতুন নির্বাচন উপাদান তৈরি করুন এবং তারপরে সমস্ত বিকল্প যুক্ত করুন। লুপ শেষ হয়ে গেলে, এটি আসল ডিওএম অবজেক্টে যুক্ত করুন।

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
var _select = $('<select>');
$.each(myOptions, function(val, text) {
    _select.append(
            $('<option></option>').val(val).html(text)
        );
});
$('#mySelect').append(_select.html());

এইভাবে আমরা কেবলমাত্র একবারের জন্য DOM সংশোধন করব!


8
পদ্ধতির পরামিতিগুলি কিছুটা বিভ্রান্তিকর, ফাংশন (ভাল, পাঠ্য) উদাহরণস্বরূপ ফাংশন (সূচক, বিকল্প) হওয়া উচিত। অন্যথায় ভাল কাজ করে।
এমবিলার্ড

14
@ ক্রসব্রোজার: আমি একমত নই - valএবং textআসলে ভেরিয়েবল এবং তাদের ব্যবহার বর্ণনা করি describe
নিকফ

1
কেবলমাত্র উদাহরণ হিসাবে, তবে সাধারণ উদ্দেশ্য পদ্ধতি হিসাবে, সেই ভেরিয়েবলগুলি বিভ্রান্ত করছে (এটি আমাকে সেই পদ্ধতিটি কীভাবে ব্যবহার করবেন তা সম্পর্কে কোনও ধারণা দেয়নি)। তবে, আমি দেব যে উত্তরটি ea .চ্যাচ পদ্ধতিটি ব্যবহার সম্পর্কে নয়।
mbillard

1
আমি আগে ব্যবহার করছিলাম mySelect.append(new Option(text, val));, যা আই 8 তে কাজ করে না। আমাকে @ নিকফের দিকে যেতে হবেmySelect.append($('<option></option>').val(val).html(text));
ম্যাথু ক্লার্ক

5
@ ব্রায়ানসোল:.attr('selected', true|false)
নিক

167

কোনও প্লাগইন না থাকলে, এটি আরও কিছুটা পুরাতন-স্কুলে না গিয়ে যতটা jQuery ব্যবহার না করেই সহজ হতে পারে:

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
$.each(myOptions, function(val, text) {
    $('#mySelect').append( new Option(text,val) );
});

বিকল্পটি ক) পূর্বনির্ধারিত নির্বাচিত মান, এবং খ) এখনই নির্বাচন করা উচিত কিনা তা আপনি নির্দিষ্ট করতে চান, আপনি আরও দুটি প্যারামিটারে পাস করতে পারেন:

    var defaultSelected = false;
    var nowSelected     = true;
    $('#mySelect').append( new Option(text,val,defaultSelected,nowSelected) );

1
ডিফল্ট মান নির্বাচন করার মতো বৈশিষ্ট্য আপনি কীভাবে সেট করবেন?
কৃষ্ণন

20
আমি এই "<option></option>"পদ্ধতির চেয়ে ভাল এটি পছন্দ ; এটা নোংরা বলে মনে হচ্ছে
জোশ এম

1
ie8 এ কাজ করে না .. এটি চেষ্টা করে দেখুন এবং নীচে এটিতে আরও একটি মন্তব্য দেখেছেন।
ব্রিয়ানসোল


11

আপনি আপনার ড্রপডাউনটি প্রথমে সাফ করতে চাইতে পারেন '(' # ড্রপডাউনকুইটিটি ') empty খালি ();

আমি এমভিসিতে আমার নিয়ামককে কেবল একটি আইটেম সহ একটি নির্বাচিত তালিকা ফেরত দিয়েছিলাম।

$('#DropDownQuality').append(
        $('<option></option>').val(data[0].Value).html(data[0].Text));    

7

শুরুতে আইটেম যুক্ত করুন

$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');

শেষে তালিকায় আইটেম যুক্ত করুন

$('<option value="6">Java Script</option>').appendTo("#ddlList");

JQuery ব্যবহার করে কমন ড্রপডাউন অপারেশন (পান, সেট করুন, যোগ করুন, সরান)


1
আপনি যদি নিজের বিকল্প প্যারামিটারের ভিতরে ডাবল-কোট ব্যবহার করেন তবে তারা ফাংশনটি বন্ধ করবে এবং স্ক্রিপ্টটি ভেঙে দেবে। পরিবর্তন .prepend("...") / $("...")করা .prepend('...') / $('...')স্নিপেটকে ঠিক করে দেবে।
হেরাল্ডমোনকি

4

সমস্ত বড় ব্রাউজারে @ নিকফের কাজগুলিতে পিগ নোট @ ফ্রোগজের সমাধান আইই 8 তে কাজ করে না। আরেকটি পদ্ধতি হ'ল:

$.each(myOptions, function(val, text) {
    $("#mySelect").append($("&lt;option/&gt;").attr("value", val).text(text));
});



0

আপনি ব্যবহার করতে পারেন jquery ব্যবহার করে

      this.$('select#myid').append('<option>newvalue</option>');

যেখানে " ম্যারিড " ড্রপডাউন তালিকার আইডি এবং নতুন মূল্য আপনি যে পাঠ্যটি সন্নিবেশ করতে চান তা হল ..


0

আমার পৃষ্ঠায় ড্রপডাউন যেমন ছিল ততই আমাকে ড্রপডাউনগুলিতে অনেকগুলি বিকল্প যুক্ত করতে হবে। সুতরাং আমি এটি এইভাবে ব্যবহার করেছি:

function myAppender(obj, value, text){
    obj.append($('<option></option>').val(value).html(text));
}

$(document).ready(function() {
    var counter = 0;
    var builder = 0;
    // Get the number of dropdowns
    $('[id*="ddlPosition_"]').each(function() {
        counter++;
    });

    // Add the options for each dropdown
    $('[id*="ddlPosition_"]').each(function() {
        var myId = this.id.split('_')[1];

        // Add each option in a loop for the specific dropdown we are on
        for (var i=0; i<counter; i++) {
            myAppender($('[id*="ddlPosition_'+myId+'"]'), i, i+1);
        }
        $('[id*="ddlPosition_'+myId+'"]').val(builder);
        builder++;
    });
});

এই গতিশীলভাবে 1 থেকে এন এর মতো মান সহ ড্রপডাউন সেট আপ করে এবং স্বয়ংক্রিয়ভাবে ড্রপডাউন যে ক্রমের (যেমন 2 য় ড্রপডাউন বাক্সে "2" পেয়েছিল) এর জন্য মানটি নির্বাচন করে।

এটা তোলে হাস্যকর যে, আমি ব্যবহার করবেন ছিল thisবা this.Objectবা $.objবা যে আমার 2nd মধ্যে ভালো কিছু .each(), যদিও --- আমি আসলে যে বস্তুর নির্দিষ্ট আইডি এবং তারপর দখল এবং আমার ফাংশন যে সমগ্র বস্তু পাস হওয়ার আগেই যোগ হবে ছিল। ভাগ্যক্রমে আমার ড্রপডাউনটির আইডি "_" দ্বারা আলাদা করা হয়েছিল এবং আমি এটি ধরতে পারি। আমার মনে হয় না যে আমার করা উচিত ছিল, তবে এটি আমাকে অন্যথায় jQuery ব্যতিক্রমগুলি দিয়ে চলেছে। আমি যা জানছিলাম তা নিয়ে অন্যেরা লড়াই করে যাচ্ছেন enjoy


আপনি কেন প্রত্যেকটিতে কাউন্টার বাড়িয়ে দিচ্ছেন? আপনি jquery নতুন? var কাউন্টার = $ ('[আইডি * = "ডিডিএলপজিশন _"]') length দৈর্ঘ্য কম ভার্বোস এবং আরও দক্ষ। আমি মনে করি আপনি আপনার কোড পোস্ট করা শুরু করার আগে আপনার আরও কিছুটা অভিজ্ঞতার প্রয়োজন। এটি উত্পাদন মানের কোড নয় কারণ এটি যেমন তুচ্ছ কাজের জন্য খারাপভাবে লিখিত এবং অতিরিক্ত জটিল। কোনও অপরাধ নেই তবে আপনার 58 টি উত্তর রয়েছে এবং কোনও ভোট নেই তার কারণ রয়েছে।
অ্যাথেন্স হলোয়ে

আমি স্পষ্টতই ভুল বুঝেছিলাম যা আমি তৈরি করছিলাম। কাউন্টারটি হ'ল ড্রপ ডাউনগুলিতে পোস্ট করা মান বাড়ানো, এবং আমি একই আইডির সাথে বেশ কয়েকটি পেয়েছিলাম, শেষের দিকে ভিন্ন "_ ##" দিয়ে, সুতরাং দৈর্ঘ্য () ভুল হত। এটিই নির্বাচকটির "আইডি * =" করার কারণ।
vapcguy

আমার অন্যান্য উত্তর হিসাবে, সাধারণত আমি যখনই সম্ভব সহজতর সরল পদ্ধতিগুলির পক্ষে পরামর্শ দিই এবং লোকেরা যদি তাদের কোডিংয়ের সাথে এতটা সাহসী না হয় এবং আরও সরলীকৃত জিনিসগুলি লিখত তবে আমার উত্তরগুলিতে সম্ভবত আরও বেশি ভোট হবে। তবে লোকেরা নিজেকে স্মার্ট দেখতে চায় এবং তাই তারা এত সহজ কিছু পছন্দ করে না। খালি শিল্পের জন্য আমাকে ভুল করে না make সমস্যা সমাধানের বা অন্য লোকের কোডটি তৈরি করা উপভোগ করি না যা হাস্যকরভাবে এটির চেয়ে বেশি জটিল,
vapcguy

সেই লুপটিতে আমার ()) এই দৈর্ঘ্যের () আরও বেশি আস্থা থাকতে পারে যদি কেউ ব্যাখ্যা করতে পারে যে মাই অ্যাপেন্ডারের কাছে বস্তুর পরিবর্তে "$ (এটি)" পাঠানো কেন কাজ করে না।
vapcguy

0

আপনার প্রতিক্রিয়াটিকে "সাফল্য ডেটা" মনে করি। এটিতে একটি তালিকা রয়েছে যা আপনাকে ড্রপডাউন মেনুতে বিকল্প হিসাবে যুক্ত করতে হবে।

success: function (successData) {
var sizeOfData = successData.length;
if (sizeOfData == 0) {
    //    NO DATA, throw an alert ...
    alert ("No Data Found");
} else {
    $.each(successData, function(val, text) {
        mySelect.append(
            $('<option></option>').val(val).html(text)
        );
    });
} }

এটি আপনার জন্য কাজ করবে ....


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.