Saya memiliki objek dengan pasangan kunci / nilai opsi yang ingin saya sembunyikan / hapus dari daftar pilihan. Tak satu pun dari pemilih opsi berikut berfungsi. Apa yang saya lewatkan?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
hitfactory
sumber
sumber
Jawaban:
Untuk apa nilainya, bentuk kedua (dengan
@
) tidak ada di jQuery 1.3. Yang pertama tidak berfungsi karena Anda tampaknya mengharapkan interpolasi variabel. Coba ini:Perhatikan bahwa ini mungkin akan rusak dengan berbagai cara yang mengerikan jika
title
berisi metakarakter pemilih jQuery.sumber
Anda tidak dapat melakukan x-browser ini. Jika saya ingat yaitu memiliki masalah. Hal termudah untuk dilakukan adalah menyimpan salinan hasil kloning dari pilihan sebelum Anda menghapus item, ini memungkinkan Anda untuk dengan mudah menghapus dan kemudian menambahkan kembali item yang hilang.
sumber
Saya menemukan cara yang lebih baik, dan itu sangat sederhana:
Untuk menampilkan lagi, cukup temukan opsi itu (bukan rentang) dan
$("option_you_want_to_show").unwrap()
.Itu telah diuji di Chrome dan Firefox.
sumber
$("select").val("0").trigger("change")
. Solusi yang lebih mudah adalah iniInilah putaran saya, kemungkinan sedikit lebih cepat karena metode DOM asli
sumber
Ini berfungsi di Firefox 3.0, tetapi tidak di MSIE 8, atau di Opera 9.62:
Melainkan menyembunyikan opsi, seseorang dapat menonaktifkannya:
Yang pertama dari dua baris di atas adalah untuk Firefox dan meneruskan fokus ke opsi ke-2 (dengan asumsi ini memiliki nilai = "2"). Jika kita menghilangkannya, opsi tersebut dinonaktifkan, tetapi masih menampilkan opsi "diaktifkan" sebelum kami menjatuhkannya. Karenanya, kami mengalihkan fokus ke opsi lain untuk menghindari ini.
sumber
Ini BISA dilakukan lintas browser; ini hanya membutuhkan beberapa pemrograman khusus. Silakan lihat biolaku di http://jsfiddle.net/sablefoste/YVMzt/6/ . Ini telah diuji untuk bekerja di Chrome, Firefox, Internet Explorer, dan Safari.
Singkatnya, saya memiliki bidang tersembunyi,
#optionstore
, yang menyimpan array secara berurutan (karena Anda tidak dapat memiliki Associative Arrays di JavaScript). Kemudian ketika Anda mengubah kategori, itu mem-parsing opsi yang ada (pertama kali hanya sampai) menulisnya ke#optionstore
, menghapus semuanya, dan mengembalikan hanya yang terkait dengan kategori.CATATAN: Saya membuat ini untuk memungkinkan nilai opsi yang berbeda dari teks yang ditampilkan kepada pengguna, jadi ini sangat fleksibel.
HTML:
JavaScript / jQuery:
sumber
resultgood
hanyalah cek untuk melihat apakah adaoptionlisting
yang ditambahkan. jika ya, daftar<option>
s dikembalikan. Jika tidak, tidak ada yang dikembalikan, yang Anda inginkan jika Anda tidak sengaja menyertakan kelas yang sebenarnya tidak ada (dalam contoh ini, katakanlah, sub-Food6). Untuk mengembalikan kosong dalam drop down, ubah baris deklarasi di awal fungsi menjadivar optionlisting="<option value=''></option>";
.data
atributnya; itu lebih benar secara semantik.Taruhan terbaik Anda adalah menyetel disabled = true pada item opsi yang ingin Anda nonaktifkan, lalu di set CSS
Dengan cara itu bahkan jika browser tidak mendukung menyembunyikan item cacat, masih tidak dapat dipilih .. tapi pada browser yang tidak mendukung hal itu, mereka akan disembunyikan.
sumber
Lihatlah pertanyaan ini dan jawabannya -
Nonaktifkan opsi pilih ...
Melihat kode Anda, Anda mungkin perlu mengutip nilai atribut
dari pemilih atribut jQuery
EDIT:
Baru menyadari bahwa Anda mendapatkan judul dari parameter fungsi, dalam hal ini sintaksnya harus
sumber
Mengacu pada saran redsquare, saya akhirnya melakukan ini:
dan kemudian untuk membalikkan ini:
sumber
Masalahnya adalah bahwa Internet Explorer tampaknya tidak mendukung metode sembunyikan dan tampilkan untuk opsi tertentu. Saya ingin menyembunyikan semua opsi pilih ddlReasonCode saya yang tidak memiliki jenis yang saat ini dipilih sebagai nilai atribut "attType".
Sementara Chrome yang cantik cukup puas dengan:
Inilah yang diperlukan IE (anak-anak, jangan coba ini di CHROME :-)):
Saya menemukan ide pembungkus itu di http://ajax911.com/hide-options-selecbox-jquery/
sumber
Setelah diuji, solusi yang diposting di atas oleh berbagai, termasuk kekacauan, untuk menyembunyikan elemen sekarang berfungsi di versi terbaru Firefox (66.0.4), Chrome (74.0.3729.169) dan Edge (42.17134.1.0)
Untuk IE, ini tidak berfungsi, namun Anda dapat menonaktifkan opsinya
dan kemudian memaksakan pemilihan nilai yang berbeda.
Perhatikan, untuk opsi yang dinonaktifkan, val dari drop-down sekarang akan menjadi null, bukan nilai opsi yang dipilih jika dinonaktifkan.
sumber
Tampaknya Anda juga harus memperbarui atribut "dipilih". Jika tidak, opsi yang saat ini dipilih dapat terus ditampilkan - meskipun mungkin akan hilang ketika Anda benar-benar memilih opsi (itulah yang dilakukannya untuk saya): Coba lakukan ini:
sumber
Saya mencoba menyembunyikan opsi dari satu daftar-pilih berdasarkan opsi yang dipilih dari daftar-pilih lain. Itu berfungsi di Firefox3, tetapi tidak di Internet Explorer 6. Saya mendapat beberapa ide di sini dan memiliki solusi sekarang, jadi saya ingin berbagi:
Kode JavaScript
HTML
Itu diperiksa karena berfungsi di Firefox 3 dan Internet Explorer 6.
sumber
id
atribut harus unik: id = Atribut ini memberikan nama ke sebuah elemen. Nama ini harus unik dalam sebuah dokumen.Untuk menghindari penggabungan string, Anda dapat menggunakan jQuery.grep
sumber
Mungkin tidak seanggun atau dapat digunakan kembali seperti plugin jquery. tetapi pendekatan lain adalah dengan hanya menyimpan elemen opsi dan menukarnya sesuai kebutuhan:
lakukan ini untuk menggunakan objek:
sumber
Saya menerapkan solusi menggunakan fungsi yang memfilter kotak kombo (
<select>
) berdasarkan atribut data- khusus. Solusi ini mendukung:<option>
untuk menunjukkan kapan filter akan membiarkan pilihan kosong.<option>
elemen tanpa atribut data-filter tidak tersentuh.Diuji dengan jQuery 2.1.4 dan Firefox, Chrome, Safari, dan IE 10+.
Ini adalah contoh HTML:
Kode jQuery untuk pemfilteran:
Untuk menggunakannya, Anda cukup memanggil fungsi dengan nilai yang ingin Anda pertahankan.
Maka pilihan yang dihasilkan adalah:
Elemen asli disimpan oleh fungsi data (), jadi panggilan berikutnya akan menambah dan menghapus elemen yang benar.
sumber
Jawabannya menunjukkan bahwa
@
tidak valid untuk iterasi jQuery yang lebih baru. Meskipun itu benar, beberapa IE lama masih tidak menyembunyikan elemen opsi. Bagi siapa pun yang harus berurusan dengan elemen opsi persembunyian di versi yang terpengaruh, saya memposting solusi di sini:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
Pada dasarnya bungkus saja dengan span dan replace di show.
sumber
Siapa pun yang tersandung pada pertanyaan ini mungkin juga mempertimbangkan penggunaan Chosen , yang sangat memperluas kemampuan pemilihan.
sumber
Kemudian, di css Anda pastikan sudah
sumber
Saya tahu pertanyaan ini telah terjawab. Tapi kebutuhan saya sedikit berbeda. Alih-alih nilai, saya ingin memfilter berdasarkan teks. Jadi saya memodifikasi jawaban oleh @William Herry seperti ini.
Dengan cara ini Anda juga dapat menggunakan nilai dengan mengganti berisi seperti ini
sumber
Untuk opsi sembunyikan di pilih gunakan:
Di mana option_node berada HTMLOptionElement
PS: Saya tidak menggunakan JQuery, tetapi menebak, itu akan berhasil:
sumber
Menurut saya yang terbaik adalah menghapus DOM sepenuhnya.
Kompatibel lintas browser. Bekerja di IE11 juga
sumber
opsi: eq (0) -hide opsi di indeks '0' di kotak pilih.
sumber
Anda dapat menampilkan / menyembunyikan dengan Nilai atau nama Kelas . Periksa tautan di bawah ini dengan contoh yang berfungsi.
Tampilkan / sembunyikan opsi jquery yang dipilih dengan nilai atau dengan nama kelas.
sumber
$ ("# ddtypeoftraining option [value = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('refresh');
sumber