使用某个类名搜索重复的ID

时间:2016-06-04 22:38:57

标签: javascript jquery

此功能会查找并提醒所有重复的自定义属性(例如,如果您尝试使用foo而非默认id)。

function duplicateAttrChecker() {

    var parmName = "foo";
    $("["+parmName+"]").each(function(){
        var value = $(this).attr(parmName);
        if($("["+parmName+"='"+ value + "']").length > 1) {
            console.log('duplicate', parmName, 'for value', value);
        }
    });

}

完整代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<p foo="one">hello</p>
<p foo="three">hello</p>
<p foo="one">hello</p>

<script>
    function duplicateAttrChecker() {

        var parmName = "foo";
        $("["+parmName+"]").each(function(){
            var value = $(this).attr(parmName);
            if($("["+parmName+"='"+ value + "']").length > 1) {
                console.log('duplicate', parmName, 'for value', value);
            }
        });

    }

    duplicateAttrChecker();
</script>

如何修改只能在某个类中找到重复项?

所以,它应该像&#34;使用类bar搜索所有元素并告诉我其中有foo个重复&#34; 。< / p>

3 个答案:

答案 0 :(得分:2)

Class selectors的语法为.className

function duplicateAttrChecker(className) {
  var parmName = "foo";
  $("." + CSS.escape(className) + "[" + CSS.escape(parmName) + "]").each(function(){
    var value = $(this).attr(parmName);
    if($("." + CSS.escape(className) + "[" + CSS.escape(parmName) + "=" + CSS.escape(value) + "]").length > 1) {
      console.log('duplicate', parmName, 'for value', value);
    }
  });
}

答案 1 :(得分:1)

这是一个严肃的问题吗?

  

问题是如何修改它以仅在某些类中找到重复项?

$(".myclass["+parmName+"]").each(function(){ .....

非常容易?

答案 2 :(得分:1)

您可以将您的类添加到属性选择器:

function duplicateAttrChecker(className, attrName) {
    $("."+className+"["+attrName+"]").each(function() {
        var value = $(this).attr(attrName);
        if ($("."+className+"["+attrName+"='"+ value + "']").length > 1) {
            console.log('duplicate', attrName, 'for value', value);
        }
    });
}

duplicateAttrChecker('bar', 'foo');

这将搜索所有bar类元素,并在它们具有重复的foo属性值时通知。

可以在此处找到工作的jsFiddle:https://jsfiddle.net/mgaskill/y6ac86a4/