jQuery, değere göre seçenek öğelerini seçin


89

Bir span öğesi tarafından sarılmış bir seçme öğem var. Select kimliğini kullanmama izin verilmiyor, ancak span kimliğini kullanma iznim var. Girişin, select'in seçeneklerinin değerlerinden biri olan i sayısı olduğu bir javascript / jquery işlevi yazmaya çalışıyorum. İşlev, ilgili seçeneği seçilene çevirecektir.

<span id="span_id">
    <select id="h273yrjdfhgsfyiruwyiywer" multiple="multiple">
        <option value="1">cleaning</option>
        <option value="2">food-2</option>
        <option value="3">toilet</option>
        <option value="4">baby</option>
        <option value="6">knick-knacks</option>
        <option value="9">junk-2</option>
        <option value="10">cosmetics</option>
    </select>
</span>

Aşağıdaki gibi bir şey yazdım (bu tam olarak çalışmıyor, bu yüzden bu soruyu gönderiyorum):

function select_option(i) {

    options = $('#span_id').children('select').children('option');
    //alert(options.length); //7
    //alert(options[0]); //[object HTMLOptionElement]
    //alert(options[0].val()); //not a jquery element
    //alert(options[0].value); //1

    //the following does not seem to work since the elements of options are DOM ones not jquery's
    option = options.find("[value='" + i + "']");
    //alert(option.attr("value")); //undefined
    option.attr('selected', 'selected');

}

Teşekkürler!

Yanıtlar:


149

İşte net bir seçiciye sahip en basit çözüm:

function select_option(i) {
  return $('span#span_id select option[value="' + i + '"]').html();
}

34

JQuery> 1.6.1 ile bu sözdizimini kullanmak daha iyi olacaktır:

$('#span_id select option[value="' + some_value + '"]').prop('selected', true);

29

İstediğiniz gibi davranması için seçeneğinizi $ (seçenek) içine sarın. Bunu yaparak da kodu kısaltabilirsiniz.

$('#span_id > select > option[value="input your i here"]').attr("selected", "selected")


6

Aşağıdaki gibi değeri seçmek için .val () kullanabilirsiniz:

function select_option(i) {
    $("#span_id select").val(i);
}

İşte bir jsfiddle: https://jsfiddle.net/tweissin/uscq42xh/8/


Hangi tarayıcıda / platformda sizin için çalışmadı? Mac / Chrome'da, listedeki bir öğeyi başarılı bir şekilde seçer, bu tam olarak orijinal soru buydu.
tom

@ Bay Lama, soruyu yanlış anlamış olabilirsiniz. @ Tom'un kod isteneni vermez: bir değer verilen i, ith seçmek optioniçinde select. OP seçenekleri filtrelemeye çalışmıyordu.
Paul

4

Değeri elde etmek için şunu kullanın:

<select id ="ari_select" onchange = "getvalue()">
<option value = "1"></option>
<option value = "2"></option>
<option value = "3"></option>
<option value = "4"></option>
</select>

<script>
function getvalue()
{
    alert($("#ari_select option:selected").val()); 
}
</script>

bu değerleri getirecek


1
function select_option(index)
{
    var optwewant;
    for (opts in $('#span_id').children('select'))
    {
        if (opts.value() = index)
        {
            optwewant = opts;
            break;
        }
    }
    alert (optwewant);
}

Teşekkür ederim! JQuery'nin dahili uygulamasının ne olduğunu bilmiyorum, ancak diğer çözümler daha basit görünüyor.
mest

Zaten jQuery'niz varsa, bunlar daha kolaydır, ancak bunu yapmanın saf bir js yolunu bilmek isteyebileceğinizi düşündüm.
Hogan

0
$("#h273yrjdfhgsfyiruwyiywer").children('[value="' + i + '"]').prop("selected", true);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.