此功能会查找并提醒所有重复的自定义属性(例如,如果您尝试使用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>
答案 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/