【问题标题】:jQuery - find control using custom attributejQuery - 使用自定义属性查找控件
【发布时间】:2012-02-21 23:12:52
【问题描述】:

我正在使用 Asp.Net 的 CheckBoxList 控件。为了获得选中的复选框,我在将数据绑定到复选框列表后为 Value 添加了一个自定义属性。

我能够在 jQuery 中获得选中的复选框,但我不知道如何使用复选框列表中的自定义属性找到特定的复选框。

代码如下:

在.cs文件中数据绑定后:

    foreach (ListItem li in cblRequestTypes.Items)
        li.Attributes.Add("itemValue", li.Value); 

获取选中的复选框:

$(":checkbox").each(function() {
              if (this.checked) {

                selectedChecks += $(this).parent().attr("itemValue") + "~";

              }
            });

现在我正在传递查询字符串中的值,并且基于此我必须找到在查询字符串中发送了 itemValue 属性的复选框。这部分不起作用,或者我可能在这里遗漏了一些东西。

var id = $.QueryString["id"]
$(id.split("~")).each(function (i, item) {
                $("checkbox[itemValue=" + item +"]").attr('check',checked');

            });

CheckBoxList 的 HTML 是这样呈现的:

<span itemValue="3"><input id="chkBoxList_0" type="checkbox" name="chkBoxList$0" /><label for="chkBoxList_0">Text 1</label></span>
<span itemValue="5"><input id="chkBoxList_1" type="checkbox" name="chkBoxList$1" /><label for="chkBoxList_1">Text 2</label></span>
<span itemValue="6"><input id="chkBoxList_2" type="checkbox" name="chkBoxList$2" /><label for="chkBoxList_2">Text 3</label></span>
<span itemValue="7"><input id="chkBoxList_3" type="checkbox" name="chkBoxList$3" /><label for="chkBoxList_3">Text 4</label></span>
<span itemValue="8"><input id="chkBoxList_4" type="checkbox" name="chkBoxList$4" /><label for="chkBoxList_4">Text 5</label></span>
<span itemValue="9"><input id="chkBoxList_5" type="checkbox" name="chkBoxList$5" /><label for="chkBoxList_5">Text 6</label></span>

【问题讨论】:

  • 我会回答这个问题,条件是你再也不会用~ 做奇怪的事情了。我已经清理了一个包含它的 ASP 项目。
  • 为什么不使用任何输入元素已有的value 属性?或者将itemValue 放在复选框本身上?或者,如果您使用的是 HTML5,请使用 data-item-value 属性 - 那么您的标记仍然有效
  • @Incognito : ~ 怎么了?它只是一个分隔符。我也可以使用逗号,但我的文本可能包含逗号,所以我选择了 ~。
  • 如果我使用 ~ 怎么办?添加/删除复选框时会发生什么?
  • @Incognito:我明白你的意思。我最好在 showmodaldialog 中传递数组而不是查询字符串值。

标签: javascript jquery asp.net checkboxlist


【解决方案1】:
​$("span[itemValue=8] input")​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

这将为您提供itemValue(在本例中)为 8 的范围内的复选框。

正如我在评论中所说,您将 value 属性放在 span 元素上有点令人困惑,而且似乎也让您感到困惑,因为您的选择器是 $("checkbox[itemValue=" + item +"]") - 这没什么用感觉。

您的选择器将寻找 checkbox 元素 - 它不存在;您要查找的元素是 input(带有 type “复选框”)。
它会尝试找到一个具有dataValue 属性的复选框——因为该属性在 span 上,所以复选框都没有。

【讨论】:

  • 感谢您指出我的错误。它生成 span 元素的原因是因为它是一个复选框列表控件。我不确定我可以在这里使用什么其他控件。
  • @Asdfg 它是否回答了您的问题?只是问,因为它仍然开放。不过,不知道如何设置复选框本身的值;我不是 asp.net 人
【解决方案2】:

其他人已经回答了这个问题,但是当我尝试投票时,它似乎已被删除。

试试:

$('span[itemValue=8] input')

(其中 8 是您要查找的 id;在此示例中碰巧选择了 8)

【讨论】:

  • 是的,很抱歉删除的答案。我发布了我的答案,重新阅读了问题,感到困惑,删除了答案......现在我重新发布了我的答案并进行了修改:-P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 2011-02-12
相关资源
最近更新 更多