更改当前 li 元素的选择
Change selection of current li element
我有一个列表:
var $curr = $('#lol').children().first()
var $last = $('#lol').children().last()
$curr.css("z-index", "1");
$("#next").click(function() {
if ($curr == $last) {
$curr = $curr.first();
$("li").css("z-index", "");
$curr.css("z-index", "1");
} else {
$curr = $curr.next();
$("li").css("z-index", "");
$curr.css("z-index", "1");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="slider">
<button id="prev" type="button">prev</button>
<button id="next" type="button">next</button>
<ul id="lol">
<li id="a">1</li>
<li id="b">2</li>
<li id="c">3</li>
<li id="d">4</li>
</ul>
</div>
单击下一步按钮后,我想更改下一个 li 项目的样式,但如果它是 ul 列表的最后一个 li 元素,则应更改第一个 li 元素。
我不知道如何检查 $curr 是否是列表的最后一个元素并转到第一个。请帮助:)
两个jQuery对象永远不会相同,但您可以使用is()
if ( $curr.is( $last ) ) {
或比较原生 DOM 节点
if ( $curr.get(0) == $last.get(0) ) {
使用 类 应用样式更改通常更容易
var elems = $('#lol li');
$( "#next" ).click(function() {
var next = elems.filter('.active').next();
if ( next.length === 0 ) next = elems.first();
elems.not( next.addClass('active') ).removeClass('active');
});
$( "#prev" ).click(function() {
var prev = elems.filter('.active').prev();
if ( prev.length === 0 ) prev = elems.last();
elems.not( prev.addClass('active') ).removeClass('active');
});
#lol li {
z-index : 0;
color : black;
}
#lol li.active {
z-index : 1;
color : red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="slider">
<button id="prev" type="button">prev</button>
<button id="next" type="button">next</button>
<ul id="lol">
<li id="a" class="active">1</li>
<li id="b">2</li>
<li id="c">3</li>
<li id="d">4</li>
</ul>
var $curr = $('#lol').children().first();
var $list = $('#lol').children();
$curr.css( "z-index", "1" );
$( "#next" ).click(function() {
$( "li" ).css( "z-index", "" );
if (($curr = $curr.next()).length === 0) {
$curr = $list.first();
}
$curr.css( "z-index", "1" );
});
基本上,如果调用 next()
将一个空的 jquery 对象分配给 $curr
,它会再次将其设置为第一个子对象。
我有一个列表:
var $curr = $('#lol').children().first()
var $last = $('#lol').children().last()
$curr.css("z-index", "1");
$("#next").click(function() {
if ($curr == $last) {
$curr = $curr.first();
$("li").css("z-index", "");
$curr.css("z-index", "1");
} else {
$curr = $curr.next();
$("li").css("z-index", "");
$curr.css("z-index", "1");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="slider">
<button id="prev" type="button">prev</button>
<button id="next" type="button">next</button>
<ul id="lol">
<li id="a">1</li>
<li id="b">2</li>
<li id="c">3</li>
<li id="d">4</li>
</ul>
</div>
单击下一步按钮后,我想更改下一个 li 项目的样式,但如果它是 ul 列表的最后一个 li 元素,则应更改第一个 li 元素。
我不知道如何检查 $curr 是否是列表的最后一个元素并转到第一个。请帮助:)
两个jQuery对象永远不会相同,但您可以使用is()
if ( $curr.is( $last ) ) {
或比较原生 DOM 节点
if ( $curr.get(0) == $last.get(0) ) {
使用 类 应用样式更改通常更容易
var elems = $('#lol li');
$( "#next" ).click(function() {
var next = elems.filter('.active').next();
if ( next.length === 0 ) next = elems.first();
elems.not( next.addClass('active') ).removeClass('active');
});
$( "#prev" ).click(function() {
var prev = elems.filter('.active').prev();
if ( prev.length === 0 ) prev = elems.last();
elems.not( prev.addClass('active') ).removeClass('active');
});
#lol li {
z-index : 0;
color : black;
}
#lol li.active {
z-index : 1;
color : red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="slider">
<button id="prev" type="button">prev</button>
<button id="next" type="button">next</button>
<ul id="lol">
<li id="a" class="active">1</li>
<li id="b">2</li>
<li id="c">3</li>
<li id="d">4</li>
</ul>
var $curr = $('#lol').children().first();
var $list = $('#lol').children();
$curr.css( "z-index", "1" );
$( "#next" ).click(function() {
$( "li" ).css( "z-index", "" );
if (($curr = $curr.next()).length === 0) {
$curr = $list.first();
}
$curr.css( "z-index", "1" );
});
基本上,如果调用 next()
将一个空的 jquery 对象分配给 $curr
,它会再次将其设置为第一个子对象。