将所选选项与jQuery中列表中的最后一个进行比较

Posted

技术标签:

【中文标题】将所选选项与jQuery中列表中的最后一个进行比较【英文标题】:Compare selected option with last in list in jQuery 【发布时间】:2020-06-22 03:26:09 【问题描述】:

html 下拉列表中选择年份,我想将所选选项与列表中的最后一个选项进行比较。像这样:

  $('#YRNext').click(function() 
    if ( $('#year option:selected').val() != $('#year').last().val() ) 
      console.log($('#year').last().val())
      console.log($('#year option:selected').val())
      $('#year option:selected').next('option').prop('selected', 'selected');
      $('#year').trigger('change');
    ;
  );

但是,if 语句不起作用。我总是在同一年收到控制台消息。 我做错了什么?

注意:我也试过了:

if ( ! $('#year option:selected').is( $('#year').last() ) 

【问题讨论】:

【参考方案1】:

$('#year').last() 基本上是$('#year')last() 取 jQuery 集合中的最后一个条目,$('#year') 只有一个条目。

要获得该列表中的最后一个选项,您可以使用$('#year option').last()

if ( $('#year option:selected').val() != $('#year option').last().val() ) 
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^

另一种选择(实际上)是在底层HTMLSelectElement 上使用selectedIndex

var year = $("#year")[0];
if (year.selectedIndex === year.options.length - 1) 

如果您有具有相同值的选项,那略有不同,但通常您没有,在这种情况下,它会做同样的事情。

【讨论】:

啊……是的,谢谢。我应该看到的。 (我将使用第一个解决方案)

以上是关于将所选选项与jQuery中列表中的最后一个进行比较的主要内容,如果未能解决你的问题,请参考以下文章

jQuery mobile 未在列表中显示正确的选定项目

使用 Angular 复制带有 UI 和所选值的下拉列表

jQuery UI 自动完成将所选项目 ID 存储在输入的 value 属性中

使用 Chosen 插件将所选文本选项以外的文本添加到选择中

Silverlight Combobox 将所选项目设置为 datagrid 的所选项目

将所选数据的 ListView 显示到 textView 中的下一个 Activity