【问题标题】:Find control in javascript or JQuery在 javascript 或 JQuery 中查找控件
【发布时间】:2012-03-14 17:48:04
【问题描述】:

我有一个使用 javascript 生成的动态 html 表。该表包含不同的控件,如文本框、具有自定义属性的下拉框。如何循环遍历此表中存在的所有控件并找到其自定义属性与某个值匹配的控件?

【问题讨论】:

  • 会更容易看到你的标记,或者至少是它的一部分......

标签: javascript jquery forms jquery-selectors dom-traversal


【解决方案1】:

这将为您提供表格中的所有表单元素 (:input selector):

var $formElements = $('#tableid').find(':input');

您可以使用attribute selector 进行过滤:

//will select every form element having a data-custom attribute set to 5
var $formElements = $('#tableid').find(':input[data-custom="5"]');

请参阅jsFiddle Demo。对于我的示例,我使用了HTML5 data- attributes,但代码可以使用您需要的任何属性。

或者您可以使用filter() method 编写过滤元素的函数:

var $formElements = $('#tableid').find(':input').filter(function () {
    return $(this).attr('data-custom') == '5';
});

jsFiddle Demo with filter()

【讨论】:

  • “其自定义属性匹配”我认为您的选择器没有找到自定义属性
  • $formElements.each(function () { //如何获取自定义属性值为“x”的控件?});
  • @sharmila 请查看我的更新答案。乍一看我误解了你的问题。属性选择器是您最好的选择。我很快就会添加一个演示。
  • 在each() 函数中只测试$(this).attr("data-custom")
  • 我试过这样。但它抛出了异常
【解决方案2】:

演示:http://jsfiddle.net/DSqZr/1/

function getControl(_value){
    $("#panel :input").each(function(){
        if($(this).attr("custom") == _value){
           return  $(this);
        }
    })​
}

var selectedCrl = getControl(1);

【讨论】:

  • 我想返回自定义属性值为1的特定控件(而不是alert),我该怎么做呢?
  • 谢谢。我怎样才能获得下拉框的控件?如果它是一个下拉框,那么我需要更改 selecteditem。有什么想法吗?
【解决方案3】:

您可以使用Attribute Contains Selector

检查示例,它可能与您需要的非常接近,即找到具有某些属性值的 inputselect 元素

【讨论】:

    【解决方案4】:

    给他们上课.control 并且:

    $('.control[attribute=value]')
    

    查看Selectors API 了解更多关于属性选择器的信息。

    【讨论】:

      猜你喜欢
      • 2019-09-05
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 2019-07-21
      • 2012-07-14
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多