在 javascript 或 JQuery 中查找控件

Posted

技术标签:

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

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

【问题讨论】:

会更容易看到你的标记,或者至少是它的一部分...... 【参考方案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 了解更多关于属性选择器的信息。

【讨论】:

以上是关于在 javascript 或 JQuery 中查找控件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jquery 或 javascript 中的两个不同数组中查找唯一记录?

jQuery或javascript查找页面的内存使用情况

jQuery或javascript来查找页面的内存使用情况

我想在 javascript 或 Jquery 中使用 XPath 3.0 语言支持

HTML基础(jQuery)

如何在 JavaScript/jQuery 中查找数组是不是包含特定字符串?