次のよう.quickview-btn
div
に、内部にあるすべての を見つけることができます。.products-grid
divs
var btns = $(".products-grid .quickview-btn");
次に、クリックされたもののインデックスを見つけます。
var index = btns.index(this);
次に-1
、 andを使用して、その内容に関係なく+1
、前と次を取得できます。ul
var prev = btns.eq(index - 1).attr('data-pid');
var next = btns.eq(index + 1).attr('data-pid');
prev
undefined
最初のボタンになります。最後next
になります。undefined
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<meta charset=utf-8 />
<title>Grid Clicks</title>
<style>
.quickview-btn {
display: inline-block;
text-decoration: underline;
color: blue;
}
</style>
</head>
<body>
<ul class="products-grid">
<li class="item">
<div class="quickview-btn" data-pid="101">Quick View</div>
101
</li>
<li class="item">
<div class="quickview-btn" data-pid="107">Quick View</div>
107
</li>
<li class="item">
<div class="quickview-btn" data-pid="123">Quick View</div>
123
</li>
<li class="item">
<div class="quickview-btn" data-pid="145">Quick View</div>
145
</li>
</ul>
<ul class="products-grid">
<li class="item">
<div class="quickview-btn" data-pid="201">Quick View</div>
201
</li>
<li class="item">
<div class="quickview-btn" data-pid="207">Quick View</div>
207
</li>
<li class="item">
<div class="quickview-btn" data-pid="223">Quick View</div>
223
</li>
<li class="item">
<div class="quickview-btn" data-pid="245">Quick View</div>
245
</li>
</ul>
<script>
(function($) {
$(".products-grid .quickview-btn").click(function() {
var btns = $(".products-grid .quickview-btn");
var index = btns.index(this);
var prev = btns.eq(index - 1).attr('data-pid');
var next = btns.eq(index + 1).attr('data-pid');
alert(
"You clicked: " + $(this).attr('data-pid') +
"\nPrev: " + prev +
"\nNext: " + next
);
});
})(jQuery);
</script>
</body>
</html>
実例| ライブソース
以下のコメントで、あなたは次のように述べています。
...しかし、最後の「quickview-btn」の次をクリックしても、最初の「quickview-btn」のデータ pid が取得されません。それはなぜですか?
上記にはそのラッピングを実装するものが何もないためです。それは魔法のようには起こりません。
ラッピングが必要な場合: Live Example | ライブソース
var btns = $(".products-grid .quickview-btn");
var index = btns.index(this);
var count = btns.length;
var prev = btns.eq((index + (count - 1)) % count).attr('data-pid');
var next = btns.eq((index + 1) % count).attr('data-pid');