Javascript 如果存在类,如何将值放入数组
我有一个div中的值列表,class=“price”我有兴趣推送 如果类存在,则将值放入数组中,否则/“不存在” div模式为.mainDiv>span,.price模式为.mainDiv>span 有时.mainDiv>.price 所以,如果class=“price”存在,如何将价格值推送到数组中 DOM树在下面Javascript 如果存在类,如何将值放入数组,javascript,jquery,node.js,Javascript,Jquery,Node.js,我有一个div中的值列表,class=“price”我有兴趣推送 如果类存在,则将值放入数组中,否则/“不存在” div模式为.mainDiv>span,.price模式为.mainDiv>span 有时.mainDiv>.price 所以,如果class=“price”存在,如何将价格值推送到数组中 DOM树在下面 abcdsnndsjdjnd $2000 abcdsnndsjdjnd $300 abcdsnndsjdjnd 我正在使用这样的代码 var arr = []; $('.mai
abcdsnndsjdjnd
$2000
abcdsnndsjdjnd
$300
abcdsnndsjdjnd
我正在使用这样的代码
var arr = [];
$('.mainDiv').each(function(i){
if ($(this).hasClass('price')){
arr.splice(i, 0, $(this).text());
} else {
arr.splice(i, 0, 'no price');
}
});
请帮助我提前感谢您的代码中存在各种问题
$(this).hasClass('price')
-这里的方法并不像您所期望的那样工作。检查所选元素的类而不是它的descentant。因此,请使用$(this).has('.price').length
$(this).text()
-检索所有div文本,因为您只需要使用$('.price',this).text()
在jQuery中使用方法进行优化
//迭代aver all div
var arr=$('.mainDiv').map(函数(i){
//缓存“.price”元素
变量$price=$('price',this);
//检查是否存在“.price”元素
//并基于此生成元素
返回$price.length?$price.text():“无价格”;
//从生成的jQuery对象获取数组
}).get();
控制台日志(arr)代码>
abcdsnndsjdjnd
$2000
abcdsnndsjdjnd
$300
abcdsnndsjdjnd
您的代码中存在各种问题
$(this).hasClass('price')
-这里的方法并不像您所期望的那样工作。检查所选元素的类而不是它的descentant。因此,请使用$(this).has('.price').length
$(this).text()
-检索所有div文本,因为您只需要使用$('.price',this).text()
在jQuery中使用方法进行优化
//迭代aver all div
var arr=$('.mainDiv').map(函数(i){
//缓存“.price”元素
变量$price=$('price',this);
//检查是否存在“.price”元素
//并基于此生成元素
返回$price.length?$price.text():“无价格”;
//从生成的jQuery对象获取数组
}).get();
控制台日志(arr)代码>
abcdsnndsjdjnd
$2000
abcdsnndsjdjnd
$300
abcdsnndsjdjnd
首先,当.price
元素是子元素时,在.mainDiv
本身上使用hasClass()。可以使用has()
或find().length
获取元素
您还可以通过使用map()
创建数组来简化此过程。试试这个:
var arr = $('.mainDiv').map(function() {
return $(this).has('.price') ? $(this).text() : 'no price';
}).get();
首先,当.price
元素是子元素时,在.mainDiv
本身上使用hasClass()。可以使用has()
或find().length
获取元素
您还可以通过使用map()
创建数组来简化此过程。试试这个:
var arr = $('.mainDiv').map(function() {
return $(this).has('.price') ? $(this).text() : 'no price';
}).get();