您似乎是在说您有一个长页面,上面同时显示了很多 div,并且您想要一个按钮跳到其中一个随机的 div。如果是这样的话:
<script>
$(document).ready(function() {
$("#getAssignment").click(function() {
var $divs = $(".assignment");
if ($divs.length > 0) {
window.location.href = "#" + $divs[ Math.floor(Math.random() * $divs.length) ].id;
}
});
});
</script>
<input id="getAssignment" type="button" value="Get assignment">
<div id="a1" class="assignment">Assigment 1</div>
<div id="a2" class="assignment">Assigment 2</div>
<div id="a3" class="assignment">Assigment 3</div>
<div id="a4" class="assignment">Assigment 4</div>
本质上,它获取所有具有“assignment”类的 div 的列表,然后通过将location.href 设置为“#”加上 div id 随机选择一个移动到 - 这意味着 url 的哈希部分将在地址栏中进行更改,以便用户可以为该特定作业添加书签。
但是,当用户可以自己浏览列表时,从所有显示的一堆中选择一个随机分配似乎有点奇怪。对我来说,从隐藏所有分配开始,然后每次单击按钮时只显示一个随机分配对我来说更有意义。使用与上面相同的html:
$(document).ready(function() {
var $assignments = $(".assignment");
$assignments.hide();
$("#getAssignment").click(function() {
$assignments.hide();
if ($assignments.length > 0)
$($assignments[Math.floor(Math.random()*$assignments.length)]).show();
});
});
更新
从您的上一条评论中,我想知道您是否尝试对多个元素使用相同的 id 属性?这是行不通的,因为每个 id 都必须是唯一的。
如果想法是有几个容器 div,每个容器中都有一个按钮,应该从该容器中随机选择一个 div,请尝试在按钮中提供 class="getAssignment" 而不是 id=...,然后编写如下代码:
<script>
$(document).ready(function() {
$(".getAssignment").click(function() {
var $divs = $(this).parent().find(".assignment");
if ($divs.length > 0) {
window.location.href = "#" + $divs[ Math.floor(Math.random() * $divs.length) ].id;
}
});
});
</script>
<div>
<input class="getAssignment" type="button" value="Get assignment">
<div id="a1" class="assignment">Assigment 1</div>
<div id="a2" class="assignment">Assigment 2</div>
<div id="a3" class="assignment">Assigment 3</div>
<div id="a4" class="assignment">Assigment 4</div>
</div>
<div>
<input class="getAssignment" type="button" value="Get assignment">
<div id="b1" class="assignment">Assigment 7</div>
<div id="b2" class="assignment">Assigment 8</div>
<div id="b3" class="assignment">Assigment 9</div>
<div id="b4" class="assignment">Assigment 10</div>
</div>
点击处理程序被分配给所有具有“getAssignment”类的元素,然后代码$(this).parent().find(".assignment")获取被点击按钮的父div并在其中找到任何“.assignment”div。