如何在使用递增变量构建的父项内使用变量选择器查找子元素

时间:2017-05-18 04:27:22

标签: javascript jquery

尝试向元素(ajax购物车中的行)添加递增类名称,同时对其中一个子元素(每个购物车行中的图像)执行相同操作。

项目编号后,显示类名中具有相同编号的匹配图像。

离。 cartitem-1显示cartimage-1

var itemCount=0;
var imgCartCount=0;

if ($('.ajax-cart-row').length) {
  // itemize cart rows
  $('.ajax-cart-row').each(function() {
    itemCount++;
    var cartItemNumber = 'cartitem-'+itemCount;
    $(this).addClass(cartItemNumber);
    $(this).val(itemCount);
    console.log('cart numbers loaded');
  });
  // itemize images in cart
  $('.ajax-cart-row img').each(function() {
    IMGCount++;
    var cartImgs = 'cartimg-'+IMGCount;
    $(this).addClass(cartImgs);
    $(this).val(IMGCount);

    $(this).closest('.ajax-cart-row').find('[class*='+cartImgs+']').show();
    console.log('image numbers added');
  });

}

编辑:有多个cartitem-#img元素,没有任何单独的类/ ids /文件名。这就是希望如此。

希望我不只是在这里睡眠不足......提前致谢

1 个答案:

答案 0 :(得分:1)

我不确定您的确切用途,或者您的代码有什么问题(除了"显示"只是确保元素不被隐藏 - 也许是您的图片默认隐藏?)。看看这样的事情是否有所不同:



var itemCount=0;

if ($('.ajax-cart-row').length) {
  // itemize cart rows
  $('.ajax-cart-row').each(function() {
    itemCount++;
    var cartItemNumber = 'cartitem-'+itemCount;
    var cartRow = $(this);
    cartRow.addClass(cartItemNumber);
    cartRow.val(itemCount);
    console.log('cart numbers loaded');
    
    // add class to the image subelements (assumes only one, or that the same class is added to all img children of cartitem-#)
    var imageIdx = 0;
    cartRow.find("img").each(function() {
      imageIdx++;
      var cartImgs = 'cartimg-'+imageIdx;
      var cartImg = $(this);
      cartImg.addClass(cartImgs);
      cartImg.val(itemCount);
      
      if (imageIdx === itemCount) {
         cartImg.show();
      }
      console.log('image numbers added');
    });
  });

}




这应该确保列表.ajax-cart-row的所有img子节点都会在类名中收到与接收到的行相同的索引(即cartitem-1中的所有img标签都将收到cartimg-1类) 。我希望这就是你要找的东西。