在多个 类 上搜索数据
Searching data on multiple classes
我正在尝试 select 我的所有 div 数据信息是错误的。
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>
我添加了一个id用于测试,效果很好:
var test = document.getElementById('test');
var dataFalse = test.dataset.info;
如果我console.log(dataFalse)
,我得到false
,这是正确的。
但我想使用我所有的 类 进行搜索,如果有一些数据信息是假的,而不是单个 ID。
尝试用 getElementByClassName
做同样的事情是行不通的,我也尝试用 $(".rows")
和其他东西替换它,但仍然行不通,我想知道我错过了什么。
.getElementById
仅查找与 id
匹配的第一个元素。毕竟,给定 id
.
的文档中应该只有一个元素
使用.querySelectorAll()
to use a CSS selector that returns a node list of all elements that match the selector. The CSS Attribute Selector就是你想要的
var theDivs = document.querySelectorAll("[data-info=false]");
console.log("Matching div count: " + theDivs.length);
// Just for fun
[].slice.call(theDivs).forEach(function(div){
console.log("Matching element:", div);
});
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>
至 select where data-info = false
,您可以使用属性 select 或:
$("[data-info=false]")
查看this link了解更多
"right" 答案取决于您将如何处理虚假元素。如果您正在控制它们的格式(包括 "hidden"),则应将 data-info= 属性更改为 class= assignments。 HTML 元素可以有多个 class。如果这样做,则可以使用 "GetElementByClassName('false')".
找到错误元素
如果您正在对找到的元素进行数字运算,那么保留 data-info= 分配将被认为是正确的,并且可以使用其他答案中提供的方法之一找到这些元素。
$(document).ready(function () {
$("div[data-info=false]").html("false");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>
我正在尝试 select 我的所有 div 数据信息是错误的。
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>
我添加了一个id用于测试,效果很好:
var test = document.getElementById('test');
var dataFalse = test.dataset.info;
如果我console.log(dataFalse)
,我得到false
,这是正确的。
但我想使用我所有的 类 进行搜索,如果有一些数据信息是假的,而不是单个 ID。
尝试用 getElementByClassName
做同样的事情是行不通的,我也尝试用 $(".rows")
和其他东西替换它,但仍然行不通,我想知道我错过了什么。
.getElementById
仅查找与 id
匹配的第一个元素。毕竟,给定 id
.
使用.querySelectorAll()
to use a CSS selector that returns a node list of all elements that match the selector. The CSS Attribute Selector就是你想要的
var theDivs = document.querySelectorAll("[data-info=false]");
console.log("Matching div count: " + theDivs.length);
// Just for fun
[].slice.call(theDivs).forEach(function(div){
console.log("Matching element:", div);
});
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>
至 select where data-info = false
,您可以使用属性 select 或:
$("[data-info=false]")
查看this link了解更多
"right" 答案取决于您将如何处理虚假元素。如果您正在控制它们的格式(包括 "hidden"),则应将 data-info= 属性更改为 class= assignments。 HTML 元素可以有多个 class。如果这样做,则可以使用 "GetElementByClassName('false')".
找到错误元素如果您正在对找到的元素进行数字运算,那么保留 data-info= 分配将被认为是正确的,并且可以使用其他答案中提供的方法之一找到这些元素。
$(document).ready(function () {
$("div[data-info=false]").html("false");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class="rows" data-info="false" id="test"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="false"></div>
<div class="lite" data-info="true"></div>
<div class="rows" data-info="true"></div>
<div class="lite" data-info="false"></div>
<div class="rows" data-info="true"></div>