javascript - 循环遍历数组时,如何从符合特定条件的元素中添加/删除类?

标签 javascript jquery

下面我有循环遍历项目列表的代码,如果 element.hazardous == no,我想从 div class item-left 中删除一个“hazardous”类。我现在设置的方式不起作用,我想知道这是否可能是因为我需要找到一种方法来针对特定的非危险阵列元素。

“危险”在我的 CSS 中的作用是,如果危险类别处于事件状态,它会添加一个实心红色边框。否则隐藏红色边框。

function showProducts(items) {
    var itemsHTML = [];
    items.forEach(function(element) {
        var url = element.url ? element.url : 'http://placehold.it/100x100'
        itemsHTML.push('<li><div class="item-left hazardous" data-product-id="' + element.id + '"><p><span class = "prod-name">' +
            'Product: ' + element.product + '</p></span><span class="prod-loc">' +
            'Location: ' + element.location + '</span><span class="qty">' +
            'Quantity: ' + element.quantity + '</span></div>' +
            '<div class="item-right"><img src="' + url + '"></div></li>')
        if (element.hazardous == 'no') {
            $('.item-left').removeClass('hazardous')
        }
    });
    $('.results').html(itemsHTML) 
}

最佳答案

不要首先对 hazardous 类进行硬编码,而是在标记渲染到 DOM 之前有条件地应用它:

function showProducts(items) {
var itemsHTML = [];
items.forEach(function(element) {
    var classes = ['item-left', element.hazardous === 'no' ? '' : 'hazardous'].join(' ').trim() 
    var url = element.url ? element.url : 'http://placehold.it/100x100'
  itemsHTML.push('<li><div class="' + classes + '" data-product-id="' + element.id + '"><p><span class = "prod-name">' +
    'Product: ' + element.product + '</p></span><span class="prod-loc">' +
    'Location: ' + element.location + '</span><span class="qty">' +
    'Quantity: ' + element.quantity + '</span></div>' +
    '<div class="item-right"><img src="' + url +
    '"></div></li>')
});
$('.results').html(itemsHTML)

您面临的问题之一是您试图从尚不存在的 DOM 元素中删除一个类 - 此时它仍然是一个字符串。

关于javascript - 循环遍历数组时,如何从符合特定条件的元素中添加/删除类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405415/

相关文章:

javascript - 我们如何为 3 个函数重用 jQuery ajax 方法?

javascript - Backbone JS如何渲染特定页面

jquery - 有没有办法以编程方式确定图像链接是坏的?

javascript - 选择一个复选框并禁用其他复选框

javascript - 如何在需要时仅提交一个隐藏/显示字段数据 - Laravel

jQuery 如果 div 的 CSS 为 left : 1% then do something

jQueryeach只影响最后一个元素

javascript - Opera vs Firefox 关注输入问题

javascript - 如何从ajax响应加载dhtmlx网格中的数据?

javascript - 每个选项下拉项显示不同的内容