【问题标题】:using jquery to find .each on .attr() with regex使用 jquery 用正则表达式在 .attr() 上查找 .each
【发布时间】:2012-07-06 23:51:31
【问题描述】:

我确定以前已经回答过这个问题,但我找不到正确的搜索词。

我想使用 jquery[1.3.2] .each() 函数在对象中搜索集合名称+var(i) info1="value1", info2="value2" 该函数的 (i) val 未知,可能为 0+ n

我正在将 id 解析为函数,所以我的问题是

function findInfos(hostId){
 $($('#'+hostId).attr('[info]')).each(function(){
        alert($(this).attr('[info(i)]'));
    });
 }
  1. 如何插入 (i)
  2. 是否可以对部分正则表达式进行搜索而不是使用 (i), (info*) infoA, infoB
  3. 给定对象 ID 将被传递给函数并且不知道 .each() 的正确结构使用是什么

我确实查看了http://stackoverflow.com/questions/4606133/jquery-each-and-attr-functions,但无法弄清楚如何将 .each() 限制为传递的 ID。

感谢艺术

【问题讨论】:

    标签: jquery regex each


    【解决方案1】:

    如果我没记错的话,我相信你想要这样的东西:

    function findInfos(hostId) {
        $('#' + hostId).attr('[info]').each(function(i) {
            alert($(this).attr('[info'+i+']'));
        });
    }​
    

    另外,请避免将相同的 id 分配给多个对象,因为这可能会导致一些讨厌的错误。

    【讨论】:

    • 这个答案忽略了这样一个事实,即$(hostId).attr('[info']) 不是获取包含单词“info”的属性列表的有效方法。那里还有一个流浪的),它会阻止这段代码首先执行
    • @Elliot Bonneville thx 的协助,但仍然无法让它发挥作用,但是 jackwanders 会做到这一点
    【解决方案2】:

    看起来您正在查看具有多个属性的单个元素,并且您想要对与某个正则表达式匹配的属性执行某些操作,例如 /^info\d$/。如果是这样,您要做的是循环遍历 DOM 元素的 attributes NamedNodeMap

    ​var el = $('#foo');
    var attributes = el[0].attributes;
    
    $.each(attributes,function(i,attr){
        var name = attr.nodeName;
        var val = attr.nodeValue;
        var regex = /^info\d$/;
    
        if(name.match(regex)) {
            //Do something with your matched attributes
        }
    });​
    

    使用 jQuery 1.3.2 测试

    jsFiddle DEMO

    【讨论】:

    • @artvanderlay 请注意,我的示例中的正则表达式只会匹配“info0”到“info9”。我假设您可以更改正则表达式以满足您的需求。
    • 作为一个有趣的副作用,它似乎在向后迭代属性,除了首先出现的宽度/高度。 <id="foo" i1="a" i2="b" i3="c" /> 它会显示 c,b,a,是否可以让它通过属性迭代 fwd?所以它输出a,b,c。谢谢艺术
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多