我的网站有一列复选框,ID按顺序排列,如“keepbox1”,“keepbox2”等。每个复选框都位于一个列表项中,还有一个href
属性,如下所示:
<li>
<a href="http://iNeedThisUrl.com" class="describer">Title</a>
<br>
<input id="keepbox1" type="checkbox" class="kboxes" name="keepbox1" />
<label for="keepbox1">Keep</label>
<div class="tinybox" alt="tinypic1" id="tinypic1" style="display:none;">
Content Here
</div>
</a>
</li>
页面上还有一个元素用作按钮
<a><label class="getFiles" for="lightbox-two">Submit</label></a>
当用户点击此按钮时,我有一个脚本循环遍历keepbox
的每个变体,以查看用户是否选中了它。如果选中某个特定的保管箱 ,我想在该特定li
中提取href属性的值。
因此,如果用户从上面的演示代码中选中了keepbox1
,我希望它能提醒“http://iNeedThisUrl.com”。
我正在使用以下脚本成功识别已检查的保留箱,但它在警告框中返回“未定义”。我猜我没有正确地抓住这个属性。有任何想法吗?谢谢!
<script type="text/javascript">
$(document).ready(function() {
$('.getFiles').click(function() {
for (i = 1; i <= 100; i++)
{
if ($("#keepbox" + i).prop('checked'))
{
var addressValue = $("#tinypic" + i).closest("li").attr("href");
alert(addressValue);
}
}
});
});
</script>
答案 0 :(得分:4)
两个问题:
1)你有关闭锚标记</a>
而没有打开锚标记作为li中div的下一个兄弟。你需要删除它。
2)div元素#tinypic
+ n是锚元素的兄弟。你需要使用:
$("#tinypic" + i).siblings("a").attr("href");
或
$("#tinypic" + i).prevAll("a").attr("href");
或
$("#tinypic" + i).closest("li").find("a").attr("href");
答案 1 :(得分:1)
$(".kboxes").each(function(){
if ($(this).prop('checked')) {
var addressValue = $(this).closest("a").attr("href");
alert(addressValue);
return false;
}
});