使用jQuery查找所选选项的名称

baf*_*mca 21 javascript jquery jquery-selectors

我已经创建了一个jquery/ajax函数来更新#courses,发送#fos的.val()和.text(),特别是选择的那个,如下所示:

$('#selling #fos').change(function() {
    $.post('/ajax/courses',
        {
            fos_id: $('#selling #fos').val(),
            name: $('#selling #fos :selected').text()
        },
    function(data) {
        $('#selling #courses').html(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

如何扩展此功能以使其使用"this",允许我在同一页面上多次重复使用此功能?我被抓住是因为你无法使用name: $(this + ' :selected').text().

Ste*_*vds 40

这应该工作:

$("#"+$(this).attr("id")+" :selected")
Run Code Online (Sandbox Code Playgroud)

它不漂亮,但它的诀窍:)

或者这将有效:

$(this).find(":selected").text()
Run Code Online (Sandbox Code Playgroud)


Mou*_*nad 6

我认为你要找的是.filter()

name: $(this).filter(':selected').text()
Run Code Online (Sandbox Code Playgroud)

如果没有选中,它将返回空字符串

祝好运!

编辑:

我没有看到布雷特在"选择"之前有一个空间,这意味着他正在寻找一个孩子.Stefanvds建议使用find()将正常工作.filter()检查当前dom是否为":selected",而find()将查找所有级别的子节点.你也可以使用.children(),如果你知道你正在寻找的所选dom是"this"的直接孩子,因为它只是寻找一个级别的孩子,因为它更有效率.

name: $(this).children(':selected').text()
Run Code Online (Sandbox Code Playgroud)