获取 jQuery UI 菜单中选中的 LI 元素的 value 属性

Posted

技术标签:

【中文标题】获取 jQuery UI 菜单中选中的 LI 元素的 value 属性【英文标题】:Get the value attribute of the selected LI element in jQuery UI menu 【发布时间】:2018-10-20 23:02:22 【问题描述】:

我为我的问题准备了jsFiddle:

为此,我采用了jQuery UI menu with categories 示例,并且刚刚为每个<LI>-元素添加了VALUE="some_number" 属性:

<ul id="menu">
  <li class="ui-widget-header"> Category 1 </li>
  <li value="1"> Option 1 </li>
  <li value="2"> Option 2 </li>
  <li value="3"> Option 3 </li>
  <li class="ui-widget-header"> Category 2 </li>
  <li value="4"> Option 4 </li>
  <li value="5"> Option 5 </li>
  <li value="6"> Option 6 </li>
</ul>

然后我尝试在单击按钮时在警报中检索并显示该值:

$("#menu").menu(
  items: '> :not(.ui-widget-header)'
);

$('#btn').button().click(function(ev) 
  ev.preventDefault();
  var value = $('#menu').val();
  // var value = $('#menu li').attr('value');
  alert('Selected menu value: ' + value);
);

但是.val() 在这里似乎是一个糟糕的选择,我可能需要通过$("#menu") 来解决这个问题?

我还想知道,为什么在 jQuery 示例中悬停和项目选择时突出显示列表项 - 而不是在我的 jsFiddle 中?

更新:

clearshot66 建议的 html-select/optgroup/option 解决方法很好,但我想让我的 jQuery UI 菜单正常工作...我还在 jQuery forum 上发布了我的问题。

【问题讨论】:

【参考方案1】:

尝试类似的方法,它会做你想要的更清洁的东西

另请注意,您的悬停不起作用,因为您需要在 CSS 上添加悬停属性

你的例子,不是我的: #menu li:hoverbackground-color:yellow;

$('#btn').click(function() 
  var value = $('#menu').val();
  alert('Selected menu value: ' + value);
);
#menuoverflow:auto;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="menu" size='6'>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>

<p><input type="button" id="btn" value="Show Selected" /></p>

否则,对于你的,因为它们是 li,你需要添加以下内容:

悬停 CSS 以显示颜色变化 点击显示颜色变化,然后取消之前选择的颜色 点击事件获取 li 文本,因为 li 没有值,所以 $("#menu li").hasClass("active") 基本上是在这种情况下找到具有颜色突出显示/类活动的 li,然后获取 .text() 值。 ..

简而言之,带有 opt 组的代码在代码方面会更有效率,并且可以设置 CSS 样式,使其看起来像您的示例。

【讨论】:

以上是关于获取 jQuery UI 菜单中选中的 LI 元素的 value 属性的主要内容,如果未能解决你的问题,请参考以下文章

jQuery选择器

获取 JQuery 中的下一个元素属性

jquery怎么获取当前元素的父元素

jquery怎么获取当前元素的父元素

jQuery中的DOM操作

jquery如何获取li元素