jquery如何获取li元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery如何获取li元素相关的知识,希望对你有一定的参考价值。

<ul>
<li class="item-a">A</li>
<li class="item-b">B
<ul class="level-1">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</li>
<li class="item-c">C</li>
<li class="item-b">D
<ul class="level-2">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</li>
</ul>

现在想获取东西是
<li class="item-a">A</li>
<li class="item-b">B</li>
<li class="item-c">C</li>
<li class="item-b">D </li>
但是B和D 内嵌的<ul><li>的内容就不要获取,谢谢!

.chlidren()是获取某元素下所有子元素,
ss=$("ul").children(".item-a,.item-b,.item-c,.item-d");是指定class名获取子元素.

实际上你这class组织比较不好控制,建议相同子级使用相同class名,这样比较好遍历.
区别子级下的具体元素可以用 id=class+"-?"来做.追问

我试试改class吧!如果有好的方法,麻烦再告诉我一下,谢谢!

追答

试了下,可以用取得第一元素后,再取同级元素来做.
var ss=$("ul").children("li")[0]; //取得第一个
ss=$(ss).add($(ss).nextAll("li")); //加入同级其他
这时候ss就是你要的结果了,不过这样也不是最好的方法,最好还是像上面说的那样,同级同class
----
给你的最上级加个class=ulBase
$("#ulBase> li")
直接写$("ul> li") 会去取所有ul下的子级li

参考技术A jquery提供了功能强大的xpath选择器能方便的定位你要的元素,比如通过id定位:
$('#元素id');通过class定位:$('.元素class');标签定义$('标签');其他属性定义,如name:
$('li[name="元素name"]');还可以通过元素间的关系定义,父子元素互找,前后元素互找。
参考技术B 哥们,你想复杂了吧,给最外面ul一个class或者id,直接就$("#menu li").hover(function(e));就能取出来啦,而且不会取到下一层的li,看你的代码是准备弄个导航吧。追问

呵呵,是准备弄分类导航!我试试,先谢谢拉

参考技术C 直接$("ul > li")就行了,或者$("$ul li[class^='item-']") 参考技术D $(ul>li)
获取ul下子级的li元素,仅限子级。

jquery如何获取div中li元素

1、通过过滤器获取li数组

var lis = $('div li');//表示获取div下所有的直接或者非直接li节点。

2、循环lis方式获取每个li元素

for(var i=0;i<lis.length;i++)
   var li = lis[i];//获取每个li元素

参考技术A 应该可以的,试一下live方法

live( type, fn )
jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件)。也能绑定自定义事件。
目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。
还不支持 blur, focus, mouseenter, mouseleave, change, submit
与bind()不同的是,live()一次只能绑定一个事件。

这个方法跟传统的bind很像,区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说,如果你给页面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时,对于这个新增加的li,其click事件依然可用。而无需重新给这种新增加的元素绑定事件。

.live()与流行的liveQuery插件很像,但有以下几个主要区别:

.live 目前只支持所有事件的子集,支持列表参考上面的说明。
.live 不支持liveQuery提供的“无事件”样式的回调函数。.live只能绑定事件处理函数。
.live 没有"setup"和"cleanup"的过程。因为所有的事件是委派而不是直接绑定在元素上的。
要移除用live绑定的事件,请用die方法
返回值
jQuery

参数
type (String) : 一个或多个用空格分隔的事件名

fn (Function) : 欲绑定的事件处理函数

示例
点击生成的p依然据有同样的功能。

HTML 代码:

<p>Click me!</p>

jQuery 代码:

$("p").live("click", function()
$(this).after("<p>Another paragraph!</p>");
);
参考技术B <div id="menu">
<ul>
<li><a href="a.html"></a></li>
<li><a href="b.html"></a></li>
<li><a href="c.html"></a></li>
</ul>
</div>

$(document).ready(function ()
//定义url,一般为 li下的a 元素的href的值
var domainUrl = ['a.html','b.html','c.html'];
$("#menu li").each(function (i)
if (window.location.href.toLowerCase().indexOf(domainUrl[i]) > 0)
//onhover是个a被选中的样式,具体你可以自己写
$(this).addClass("onhover");

);
);
不明白追问或加Q20011011
本回答被提问者采纳
参考技术C $('div li')
$('div').find('li')
参考技术D 试试 $('div li')

以上是关于jquery如何获取li元素的主要内容,如果未能解决你的问题,请参考以下文章

jquery如何获取ul中第一个li和最后一个li

使用jquery获取指定li元素后面的所有兄弟元素

jquery 如何对当前li里 不同级的元素做操作

如何使用 javascript 或 jquery 在 iframe 中获取 li 数据属性

jquery如何实现点击LI标签和下面的LI互换顺序?

jquery怎样获取一个元素下面相同子元素的个数?