jQuery chọn các phần tử tùy chọn theo giá trị


89

Tôi có một phần tử chọn được bao bọc bởi một phần tử span. Tôi không được phép sử dụng id chọn nhưng tôi được phép sử dụng id span. Tôi đang cố gắng viết một hàm javascript / jquery trong đó đầu vào là số i, là một trong những giá trị của các tùy chọn của select. Chức năng sẽ chuyển tùy chọn có liên quan thành đã chọn.

<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>

Tôi đã viết một cái gì đó như sau (điều này không hoàn toàn hoạt động, đó là lý do tại sao tôi đăng câu hỏi này):

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');

}

Cảm ơn!

Câu trả lời:


148

Đây là giải pháp đơn giản nhất với một bộ chọn rõ ràng:

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

32

Với jQuery> 1.6.1 tốt hơn nên sử dụng cú pháp này:

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

29

Chỉ cần bọc tùy chọn của bạn trong $ (option) để nó hoạt động theo cách bạn muốn. Bạn cũng có thể làm cho mã ngắn hơn bằng cách

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


6

Bạn có thể sử dụng .val () để chọn giá trị, như sau:

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

Đây là jsfiddle: https://jsfiddle.net/tweissin/uscq42xh/8/


Nó không hoạt động trên trình duyệt / nền tảng nào cho bạn? Trên Mac / Chrome, nó chọn thành công một mục trong danh sách, chính xác là câu hỏi ban đầu.
tom

@ Mr.Llama, bạn có thể đã hiểu sai câu hỏi. Mã của @ tom thực hiện những gì được yêu cầu: đã cho một giá trị i, hãy chọn thứ i optiontrong select. OP đã không cố gắng lọc các tùy chọn.
Paul

4

Để nhận giá trị, chỉ cần sử dụng cái này:

<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>

điều này sẽ lấy các giá trị


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

Cảm ơn bạn! Tôi không biết việc triển khai nội bộ của jQuery là gì, nhưng các giải pháp khác trông đơn giản hơn.
say mê

Nếu bạn đã có jQuery thì việc đó dễ dàng hơn, nhưng tôi nghĩ rằng bạn có thể muốn biết một cách thuần túy js để thực hiện nó.
Hogan

0
$("#h273yrjdfhgsfyiruwyiywer").children('[value="' + i + '"]').prop("selected", true);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.