【发布时间】:2013-05-20 13:40:27
【问题描述】:
这是 jquery prev/next 函数,仅适用于一组。如果我添加另一个 ul 集,则第二个集不起作用;下一个/上一个不起作用。我知道我需要对脚本代码进行一些更改,以便它可以与尽可能多的 ul 一起使用。
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
</ul>
<a class="prev">prev</a> | <a class="next">next</a>
脚本是:
$('ul li:gt(4)').hide();
$('.prev').click(function() {
var first = $('ul').children('li:visible:first');
first.prevAll(':lt(5)').show();
first.prev().nextAll().hide();
});
$('.next').click(function() {
var last = $('ul').children('li:visible:last');
last.nextAll(':lt(5)').show();
last.next().prevAll().hide();
});
});
并添加 jquery.js 以使其正常工作。 现在我想知道如何使上面的这个脚本与许多 ul 和 div 一起工作而不会导致任何问题或错误。
更新#1: *我想改变下面的代码来适应另一个 div 和 ul(比如说我有 ul#block1 和 ul#block2.. 有没有更好的和更清洁的方式??*
$('ul#block1 li:gt(4)').hide();$('ul#block2 li:gt(4)').hide();
$('.prev').click(function() {
var first = $('ul#block1').children('li:visible:first');
var firstz = $('ul#block2').children('li:visible:first');
first.prevAll(':lt(5)').show();
first.prev().nextAll().hide();
});
$('.next').click(function() {
var last = $('ul#block1').children('li:visible:last');
var lastz = $('ul#block2').children('li:visible:last');
last.nextAll(':lt(5)').show();
last.next().prevAll().hide();
});
});
【问题讨论】:
-
我没听懂你的问题。
-
好的,我将对其进行编辑和改写。谢谢
-
如果你有多个 ul 会有多个 next / prev 锚点吗?这些列表和锚点会被包裹在父 div 中吗?或者您是否期望
$('ul')的选择器会知道您的目标是哪个 ul? -
不,它们是单独的,但在同一个 html 页面中......我注意到如果我有多个 ul,该功能仅适用于第一组......并且是 $ ('ul') 就是我要说的。
-
发布一个更完整的 html 标记,比如两个 uls 以及你想从他们那里得到什么