0

单击#catDelete 时,我想获取复选框的值。

下面是html代码

<?php $i=1; do { ?>
<input type="checkbox" value="<?php echo $row_cat['cat']; ?>" class="checkboxcat" id="<?php echo $i; ?>"  name="catcheckbox" style="border:#cccccc 1px solid; background-color:#fff;"><?php echo $row_cat['cat']; ?>
<span id="CatDelete" style="position:relative; left:10px; color:#ff0000; font-size:10px;">Delete</span>
<?php $i++; } while ($row_cat = mysql_fetch_assoc($cat)); ?>

jquery 代码 - 它给了我第一个复选框的值

$('#CatDelete').click(function(){
alert($('.checkboxcat').attr('id'));
});

任何帮助表示赞赏。搜索是否有重复的问题,但没有找到。

4

1 回答 1

1

您没有展示太多的结构,但看起来复选框是跨度之前的兄弟元素。如果是这样的话:

$("#CatDelete").click(function() {
    var val = $(this).prevAll('input').first().val();
    console.log(val);
});

从被点击的元素开始,通过兄弟姐妹寻找input元素,抓取第一个元素,并获取它的值。

但是您现在已经编辑了问题,说它处于循环状态。您不能拥有多个相同的元素id(“CatDelete”)。您需要更改跨度以使用类,然后更改上述内容以使用该类。因此,例如,如果您将其更改为使用“CatDelete”类,则:

// v--- Note the change
$(".CatDelete").click(function() {
    var val = $(this).prevAll('input').first().val();
    console.log(val);
});

实时工作副本| 来源

但我想我可能会稍微调整结构,这样你就不会像那样寻找兄弟元素。如果将每一对(复选框和按钮)放在一个容器中,例如 a div,您可以做一些更直接的事情来找到匹配的input

var val = $(this).closest('div').find('input').val();

例如

$(".CatDelete").click(function() {
    var val = $(this).closest('div').find('input').val();
    console.log("The value for the checkbox is: " + val);
});

实时工作副本| 来源

于 2012-11-25T10:08:17.633 回答