如何在$('#id option:eq(VARIABLE)')中使用变量?

时间:2018-11-15 10:12:10

标签: jquery

我基本上想通过与各个值进行比较来将某些下拉菜单设置为某个索引。 这是代码:

function InitializeLieblingsplatzOptions(){
  $.post('../include/retrieveLieblingsplatz.php',{
  //nothing to transmit
  }).then((data) => {
    data = JSON.parse(data)
    console.log("data in retrieveLieblingsplatz.php is ", data)

    //let test = $('#liebraum').find("test")
    $('#liebraum option:eq(data.raum)').prop('selected', true)
    $('#liebsitz option:eq(data.nummer)').prop('selected', true)



  })
}

从ajax返回的数据包含两个字符串,分别代表房间名称和座位号。此站点上有2个下拉菜单,其中包含所有房间的所有名称以及相应房间的所有可用座位。 现在,我想使用AJAX返回的2个字符串将这些下拉菜单的选项设置为相应的选项。因此,我正在使用上面已经显示的这两个jquery命令:

$('#liebraum option:eq(data.raum)').prop('selected', true)
$('#liebsitz option:eq(data.nummer)').prop('selected', true)

当前,什么都没有发生。^^就像两个dropwdown菜单一样,都没有被触及。我想知道是否是因为我必须将包含要比较的字符串的这些变量放入“”子句中。因此,它们仅被视为字符串,而不是变量。到目前为止,在jquery的上下文中我从未遇到过这样的情况,我也不知道是否有一种方法可以解决Oo

3 个答案:

答案 0 :(得分:0)

请搜索如何在javascript中连接字符串...

$('#yourID option:eq(' + yourVariable + ')')

答案 1 :(得分:0)

您可以使用ES6模板文字:

$(`#liebraum option:eq(${data.raum})`)

或者,如果您想坚持使用ES5,请使用String串联:

$('#liebraum option:eq('+data.raum+')')

答案 2 :(得分:0)

您可以像这样使用CSS选择器来做到这一点

$('#liebraum option:eq('+data.raum+')').prop('selected', true);

或使用jQuery公开的.eq方法。

$('#liebraum option').eq(data.raum).prop('selected', true);