jQuery menghapus opsi dari pilih

221

Saya memiliki halaman dengan 5 pilihan yang semuanya memiliki nama kelas 'ct'. Saya perlu menghapus opsi dengan nilai 'X' dari setiap pilih saat menjalankan acara onclick. Kode saya adalah:

$(".ct").each(function() {
    $(this).find('X').remove();
   });

Di mana saya salah?

pengguna135498
sumber
Ini bekerja dengan baik: $('select').children('option[value="X"]').remove();
劉鎮 瑲

Jawaban:

451

Coba ini:

$(".ct option[value='X']").each(function() {
    $(this).remove();
});

Atau agar lebih singkat, ini juga akan berhasil:

$(".ct option[value='X']").remove();
Andrew Hare
sumber
1
Ini berhasil untuk saya. Terima kasih. Apa sytax untuk membatasi ini ke .ct dengan nilai yang dipilih = ''?
user135498
2
Ini adalah yang termudah jika Anda tidak perlu tahu nilainya. Misalnya menghapus opsi pertama $ ("# affiliate") [0] [0] .remove ();
ladieu
55
$('.ct option').each(function() {
    if ( $(this).val() == 'X' ) {
        $(this).remove();
    }
});

Atau hanya

$('.ct option[value="X"]').remove();

Poin utama adalah yang findmengambil string pemilih, dengan memberinya makan xAnda mencari elemen bernama x.

meder omuraliev
sumber
5
1 i seperti jawaban ini saya pikir yang lebih baik karena saya bisa menguji 'X' sebagai seperti atau bagian dari valueuntuk <select>elemen
Shareef
1
Saya menggunakan jawaban ini karena saya harus menghapus semua opsi selain val = 0. saya menggunakan! = 0 dan bekerja seperti pesona :)
Lakshman Pilaka
31

find()mengambil pemilih, bukan nilai. Ini berarti Anda harus menggunakannya dengan cara yang sama Anda akan menggunakan fungsi jQuery biasa ( $('selector')).

Karena itu Anda perlu melakukan sesuatu seperti ini:

$(this).find('[value="X"]').remove();

Lihat jQuery find docs.

TM.
sumber
1
jauh lebih baik dalam kasus di mana Anda melewatkan variabel ke append
Neurothustra
3

Ini berfungsi baik pada tag opsi atau bidang teks:

$("#idname option[value='option1']").remove();
Ashu
sumber
1

jika dropdown Anda ada dalam sebuah tabel dan Anda tidak memiliki id untuk itu maka Anda bisa menggunakan jquery berikut:

var select_object = purchasing_table.rows[row_index].cells[cell_index].childNodes[1];
$(select_object).find('option[value='+site_name+']').remove();
Md. Shafiqur Rahman
sumber
1

Untuk jquery <1,8 Anda dapat menggunakan:

$('#selectedId option').slice(index1,index2).remove()

untuk menghapus rentang tertentu dari opsi yang dipilih.

jajhonrod
sumber
1

Ketika saya melakukan hanya menghapus opsi tetap di ddl pada tampilan, tetapi sudah hilang dalam html (jika Anda memeriksa halaman)

$("#ddlSelectList option[value='2']").remove(); //removes the option with value = 2
$('#ddlSelectList').val('').trigger('chosen:updated'); //refreshes the drop down list
Vishav Premlall
sumber
1

Iterasi daftar dan hapus beberapa item menggunakan find. Respons berisi array bilangan bulat. $ ('# OneSelectList') adalah daftar pilih.

$.ajax({
    url: "Controller/Action",
    type: "GET",
    success: function (response) {
        // Take out excluded years.
        $.each(response, function (j, responseYear) {
            $('#OneSelectList').find('[value="' + responseYear + '"]').remove();
        });
    },
    error: function (response) {
        console.log("Error");
    }
});
Sobat
sumber