首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从li元素中获取id?

如何从li元素中获取id?
EN

Stack Overflow用户
提问于 2012-02-09 01:44:52
回答 2查看 1.9K关注 0票数 0

我尝试使用jquery将the.live() li元素的值作为以下代码:

代码语言:javascript
复制
$("body").on("click", "#nav li:has(ul)", function (event) {
   if (this == event.target) {
      $(this).toggleClass('clicked').children('ul').slideToggle();
      $(this).find('li:has(ul)').removeClass('clicked').find("ul").slideUp();
      $(this).siblings().removeClass('clicked').find("ul").slideUp();
   }
})

$("#content").load("content.html");

content.html中,我放了一些这样的代码:

代码语言:javascript
复制
   <ul id="nav">
       <li value='2012'>2012
         <ul>
             <li value='Geography'>Geography</li>
             <li value='Topography'>Topography</li>
             <li value='Geological'>Geological</li>
             <li value='Seismology'>Seismology</li>
             <li value='Volcanology'>Volcanology</li>
             <li value='Oceanography'>Oceanography</li>
             <li value='Hydrogeology'>Hydrogeology</li>
             <li value='Meteorology'>Meteorology</li>
             <li value='Demography'>Demography</li>
         </ul>
       </li>
   </ul>

那么,当我单击li元素alert($('li').attr('value')时,如何获取它的值呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 01:49:20

在事件侦听器中,向事件侦听器添加额外的else条件。

除非被阻止,否则该事件将始终在单击#nav li:has(ul)元素(其后代)时触发。检查event.target元素是否指向<li>

代码语言:javascript
复制
$("body").on("click", "#nav li:has(ul)", function (event) {
   var $target = $(event.target);
   if (this == event.target) {
      $target.toggleClass('clicked').children('ul').slideToggle()
      $target.find('li:has(ul)').removeClass('clicked').find("ul").slideUp()
      $target.siblings().removeClass('clicked').find("ul").slideUp();
   } else if ($.nodeName(event.target, 'li')) {
       // LI element, not the root li
       var val = $target.attr('value');
   }
});

这段代码假定单击的<li>元素没有任何其他后代(即:纯文本)。如果是这样的话,你也必须遍历树。

我建议使用data-attributes,而不是添加非标准的value属性,例如:

代码语言:javascript
复制
<li data-value='Geological'>Geological</li>

获取data-attribute的值:

代码语言:javascript
复制
$target.attr('data-value'); // Or:
$target.data('value');
票数 2
EN

Stack Overflow用户

发布于 2012-02-09 01:48:58

应该使用.val()返回值,使用.html()返回html。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9198641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档