如何使用jQuery获取动态追加元素中的指定href链接
获取动态追加IMDB链接的解决方案
你原来的写法会匹配全局所有<a>标签,默认返回第一个元素的href属性,因此会出现匹配错误的问题,可通过以下几种方式解决:
方法1:生成链接时直接存储(最推荐)
你在拼接imdbPointer变量时已经拿到了完整的链接地址,直接将该值赋值给存储变量即可,无需后续再从DOM查询:
var imdbPointer = "https://www.imdb.com/title/" + data.imdb_id // 直接存储已有链接值,省略DOM查询步骤 var storeIMDBLink = imdbPointer imdbLink.empty() imdbLink.append("<a href='" + imdbPointer + "'>" + "IMDB - " + data.original_title + "</a>")
方法2:限定选择器的查询范围
如果你需要后续从DOM获取链接,可以将查询范围限定在你追加a标签的父容器imdbLink内,不会匹配到页面其他位置的a标签:
var storeIMDBLink = imdbLink.find("a").attr("href")
方法3:给目标a标签添加唯一标识
如果无法直接拿到imdbLink这个jQuery对象,可以在追加标签时给目标a标签添加专属类名,后续通过类名精准定位:
- 追加标签时添加类名:
imdbLink.append("<a class='custom-imdb-link' href='" + imdbPointer + "'>" + "IMDB - " + data.original_title + "</a>")
- 后续通过类名获取链接:
var storeIMDBLink = $("a.custom-imdb-link").attr("href")
注意:所有获取DOM元素属性的操作,必须要等元素完成追加渲染到DOM之后再执行,否则会返回
undefined。
内容的提问来源于stack exchange,提问作者Daelso
相关产品推荐
相关产品推荐

