Javascript 如果存在类,如何将值放入数组

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

我有一个div中的值列表,class=“price”我有兴趣推送 如果类存在,则将值放入数组中,否则/“不存在”

div模式为.mainDiv>span,.price模式为.mainDiv>span 有时.mainDiv>.price

所以,如果class=“price”存在,如何将价格值推送到数组中

DOM树在下面


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();