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

如何使用jQuery获取div内链接的href属性?

无法获取动态加载的div内链接的href属性

我尝试使用jQuery获取#films容器内动态加载的链接的href属性,但没能成功。页面会在#films容器内动态加载包含链接的div,页面代码如下:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Cinemas</title> 
</head> 
<body> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <div id = "films"></div> 
    <script src="script.js"></script> 
</body> 
</html>

我的script.js代码如下:

$(document).ready(function() { 
    $.get(myUrl, function(data) { 
        // this block works 
        $('#films').html($('.block_afisha', data).html()) 
    }); 
    $('#films').find('a').each(function() { 
        // there is no iterations here 
        console.log($(this).attr('href')); 
    }); 
});

请问该如何修复这个问题?


这个问题的核心是异步操作的执行顺序:$.get是异步请求,它不会阻塞后续代码的执行。当你调用$('#films').find('a').each(...)的时候,$.get的回调函数还没执行,#films里还没有任何动态加载的内容,自然找不到对应的链接。

你有两种可行的修复方案:

方案一:将链接处理逻辑放到$.get的回调函数内

把遍历链接的代码移到内容插入操作之后,确保是在动态内容加载完成后再执行:

$(document).ready(function() { 
    $.get(myUrl, function(data) { 
        // 先把动态内容插入到页面
        $('#films').html($('.block_afisha', data).html());
        // 现在内容已存在,可以遍历链接了
        $('#films').find('a').each(function() { 
            console.log($(this).attr('href')); 
        });
    }); 
});

方案二:使用事件委托处理后续交互(如果涉及动态元素操作)

如果你的需求不只是一次性获取href,而是要给这些动态加载的链接绑定点击事件之类的交互操作,更推荐用jQuery的事件委托机制,利用事件冒泡来处理动态元素:

$(document).ready(function() { 
    $.get(myUrl, function(data) { 
        $('#films').html($('.block_afisha', data).html());
    }); 

    // 事件委托:监听#films内所有a标签的点击事件(包括后续动态添加的)
    $('#films').on('click', 'a', function(e) {
        e.preventDefault(); // 可选,阻止默认跳转行为
        console.log($(this).attr('href'));
    });
});

第一种方案适合你现在只是想一次性获取所有链接href的场景,第二种更适合需要和动态元素进行交互的长期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:07