【问题标题】:How to check if the previous checkbox is checked in a jquery each function如何检查是否在jquery每个函数中选中了前一个复选框
【发布时间】:2012-12-28 13:37:35
【问题描述】:

我有这个非常大的表,它包含单行,可以使用左侧的复选框进行选择,或者它们可以包含包含自己的单独行的组,其中可以单独选择组以进行选择该组中的所有单个行。 现在我有一个查询每个函数,看起来像这样......

$('tbody :checked').each(function() {
    //row counter here
    if ($(this).prev("input:checkbox").is(':checked')){

所以这会检查哪些行被检查,然后我有这个“如果”语句对我不起作用。基本上在每一行中我都有输入值,但是我不希望此代码在未选中复选框的任何输入上运行。因此,在每个函数中,我希望它检查是否选中了前一个复选框,如果选中则继续执行代码,如果没有则跳过它。 但是,我可以轻松地为各个行执行此操作,但是我的组很复杂,因为它们可以包含许多表行,所以我不能只询问最近的表行并查看复选框是否被选中。

那么我怎样才能简单地检查我所在的输入框之前的第一个复选框是否被选中。

谢谢

编辑...
这是单行...

<tr class="LotTableRow">
    <td class="ColLot" colspan="2">
        <label style="font-size: 90%; font-weight: normal; height: 10px">
            <input checked="checked" id="3" name="BidderLot" onclick="participateOnClick(this);" type="checkbox" value="true"><input name="BidderLot" type="hidden" value="false">                                          New Lot
        </label>
    </td>
    <td class="ColQuantityRow">
        90
    </td>
    <td class="ColStartBid">
        <input class="text-box single-line BidderLotText" name="[0].BidderLots[0].StartBid" type="text" value="" alt="N/A" autocomplete="off">
    </td>
</tr>

这可以是一个组,但它可以永远持续下去......

<tr class="LotTableRow" style="display:table-row">
    <td class="ColGroup" colspan="2">
        <input name="[2].AuctionId" type="hidden" value="c7df8b82-afa8-4709-ae08-f986523e38b9">
            <input name="[2].LotGroupId" type="hidden" value="3cca6186-db7e-411b-975c-f97e7c10119c">
        <label>
            <input checked="checked" id="3cca6186-db7e-411b-975c-f97e7c10119c" name="BidderGroup" onclick="participateOnClick(this)" type="checkbox" value="true"><input name="BidderGroup" type="hidden" value="false">                                            dfgdfgdfg
        </label>
    </td>
    <td class="EnglishBidderLotCol">
    </td>
</tr>
<tr class="LotTableRow">
    <td class="LotTableSpace">
    </td>
    <td class="ColLot">
        New Lot
    </td>
    <td class="ColQuantityRow">
        20
    </td>
    <td class="ColStartBid">
        <input class="text-box single-line BidderLotText watermark" name="[2].BidderLots[0].StartBid" type="text" value="" alt="N/A">
    </td>
</tr>

【问题讨论】:

  • 请发布一些相关的 HTML,以便我们查看布局。
  • 你能添加一些示例 HTML 吗?
  • 另外,我知道我的 if 语句是错误的,这只是我尝试的最后一件事
  • 能否提供一些HTML代码?
  • prev("input:checkbox") 这个选择器是错误的。它应该是 prev("input[type=checkbox]") ,您可以使用它执行 prev("input[type=checkbox]:checked") 并删除 is()。

标签: jquery input checkbox each ischecked


【解决方案1】:

假设每个 tr 中有一个复选框,这应该可以:

if ($(this).parents('tr:eq(0)').prev().find('input[type="checkbox"]:checked').length){

您之前的选择器将不匹配,因为 TD 元素内没有之前的复选框。但是由于您没有发布任何 HTML,这只是我的猜测。

【讨论】:

  • 是的,这样的东西适用于我的个人行,但是当我进入我的组时它不起作用,因为它们都在自己的“tr”中,没有复选框
【解决方案2】:

嗯,换个方式怎么样?

  1. 获取每个选中的项目:

    jQuery("tbody 输入:复选框")

  2. 处理每个项目

    jQuery("tbody input:checkbox").find("无论你在寻找什么来运行你的代码").each(function() {});

希望对你有帮助

【讨论】:

  • 好的,我这样做了,但是当我进入我的小组时,我仍然遇到了同样的问题。很难说你只想要组内的文本框
  • @Ben,发布包含组的 HTML 的 sn-p
猜你喜欢
  • 1970-01-01
  • 2011-09-07
  • 2015-10-03
  • 2010-10-28
相关资源
最近更新 更多