jQuery如何选择不是.first()或.last()的元素

时间:2012-07-11 10:23:39

标签: jquery jquery-selectors dom-traversal

我有这段代码

        <ul>
            <li><a href="index.php">Web Development</a></li>
                <span data-landing_count="1">
                    <li class="subli"><a href="1.html">E-shop</a></li>
                    <li class="subli"><a href="2.html">Prezentations</a></li>
                    <li class="subli"><a href="3.html">Custom CMS</a></li>
                    <li class="subli"><a href="4.html">WordPress & Joomla!</a></li>
                    <li class="subli"><a href="5.html">Web apps</a></li>
                    <li class="subli lastsl"><a href="index-b.html">Design</a></li>
                </span>
            <li><a href="6.html">E-courses</a></li>
                <span data-landing_count="2">
                    <li class="subli"><a href="7.html">Design & Graphics</a></li>
                    <li class="subli lastsl"><a href="8.html">Web Development</a></li>
                </span>
            <li><a href="9.html">SEO</a></li>
                <span data-landing_count="3">
                    <li class="subli"><a href="91.html">On-page SEO</a></li>
                    <li class="subli"><a href="92.html">W3C validation</a></li>
                    <li class="subli"><a href="93.html">Linking</a></li>
                    <li class="subli lastsl"><a href="94.html"><img src="img/star.png" alt="star" width="12" class="star">Copywriting</a></li>
                </span>
            <li data-landing_count="4"><a href="95.html">Web hosting</a></li>
            <li data-landing_count="5"><a href="96.html"><img src="img/star.png" alt="star" width="12" class="star">Pricing</a></li>
            <li data-landing_count="6"><a href="97.html">Contact us</a></li>
        </ul>

有3个跨度,我现在可以通过.first()定位第一个,使用.last()定位最后一个。但是我如何针对中间人呢?

感谢您的回复

4 个答案:

答案 0 :(得分:6)

您可以使用:

$('span').eq(1);

使用eq()方法或选择器:

$('span:eq(1)');

或者:

$('span').slice(1,-1);

请注意,您的HTML无效:可以包含li元素的唯一元素是ulol

参考文献:

答案 1 :(得分:2)

$('ul span').not(':first,:last');

jsFiddle Demo

请注意您的HTML完全被破坏。你应该首先学习HTML ,因为这只会导致神秘的问题和DownVoted StackOverflow问题。

li只能是ulol的孩子。此外,ulol只能将li作为孩子。您无法按照自己的方式将span放在HTML中。

答案 2 :(得分:0)

你可以用以下方法修复它:

.eq(1)

它应该有用。

如果你想获取所有元素,当你从secound on迭代到pre-end元素时,可以使用for;

答案 3 :(得分:0)

首先,您的HTML BAD 。不要在<span>标记之间放置<li>个标记。只会在灾难中结束。

其次,您是否针对这些提供不同的风格?如果是这样,那么为什么不使用css :first-child:last-child选择器。这样你可以设计第一个和最后一个而不是两者之间的样式。