You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery each循环内无法获取产品名称与SKU数据,请求排查

问题分析与解决方案

代码核心问题

  1. this指向丢失:setTimeout的回调函数里,this不再指向当前遍历的.e-loop-item元素,而是默认指向window对象,导致基于this的子元素选择器无法找到目标内容,返回空值。
  2. 选择器转义错误:代码里的>是HTML转义字符,jQuery选择器中需要直接使用>,不需要转义。
  3. 延迟逻辑不合理:循环同步完成后,所有setTimeout会在500ms后几乎同时触发,若要等待元素加载,这种写法无法实现逐个等待的效果。

修正后的代码

$('.post-type-archive-product .elementor-grid > div.e-loop-item').each(function(index) {
    // 保存当前元素引用,避免setTimeout中this指向偏移
    var $currentItem = $(this);
    
    // 若需错开执行时机,用index*延迟时长;若元素已加载完成,可直接去掉setTimeout
    setTimeout(function() {
        var prodName = $currentItem.find('.product_title > a').text();
        var prodSku = $currentItem.find('div.sku_wrapper > .sku').text();

        console.log('SKU:', prodSku, '产品名称:', prodName);
    }, index * 500);
});

额外排查建议

  • 先在控制台执行$('.post-type-archive-product .elementor-grid > div.e-loop-item .product_title > a').first().text(),测试选择器是否能正确获取内容,排除选择器本身的问题。
  • 若产品是动态加载(如滚动加载),建议使用MutationObserver监听元素加载完成,或通过事件委托确保元素存在后再获取数据。

内容的提问来源于stack exchange,提问作者user3847953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:35