素材牛VIP会员
JQ 获取动态生成的元素集合?
 un***oo  分类:JavaScript  人气:1216  回帖:2  发布于6年前 收藏

<nav id="choose">

<span>你的选择:</span>
<div>
    <mark>苹果<a class="a0" data-index="0" href="javascript:;">x</a></mark>
    <mark>4.6-4.9英寸<a class="a1" data-index="1" href="javascript:;">x</a></mark>
    <mark>window phone<a class="a2" data-index="2" href="javascript:;">x</a></mark>
    <mark>双卡单4G<a class="a3" data-index="3" href="javascript:;">x</a></mark>
</div>

</nav>

jQ代码:
var crumbData = [

{
    "title": "品牌",
    "data": ["苹果", "小米", "锤子", "魅族", "华为", "三星", "OPPO", "vivo", "乐视"]
},
{
    "title": "尺寸",
    "data": ["4.0-4.5英寸", "4.6-4.9英寸", "5.0-5.5英寸", "6.0英寸以上"]
},
{
    "title": "系统",
    "data": ["android", "ios", "window phone", "无", "其他"]
},
{
    "title": "网络",
    "data": ["联通3G", "双卡单4G", "双卡双4G", "联通4G"]
}

];

var len = crumbData.length;
var chooseObj = {};
for (var i = 0; i < len; i++) {

$("#type").append('<li class="Li' + i + '"><span>' + crumbData[i].title + '</span></li>');
for (var j = 0; j < crumbData[i].data.length; j++) {
    $(".Li" + i).append('<a href="javascript:;">' + crumbData[i].data[j] + '</a>')
}
$(".Li" + i + " a").on("click", function () {
    var _index = $(this).parent().index();//每行li的下标
    $(this).addClass("on").siblings().removeClass("on");
    chooseObj[_index] = $(this).text();
    console.log(chooseObj);
    createChooseHtml();
});

}
function createChooseHtml() {

var html = '';
for (var k = 0; k < len; k++) {
    console.log(chooseObj[k]);     
    if (chooseObj[k]) {
        html += '<mark>' + chooseObj[k] + '<a class="a' + k + '" data-index="' + k + '"  href="javascript:;">x</a></mark>'
        // 生成结构的时候在行间保存对象的key值
        // html += `<mark>${chooseObj[k]}<a data-index="${k}" href="javascript:;">x</a></mark>`
    }
}
var chooseA = $("#choose div").find("a");
console.log(chooseA);
console.log(chooseA.length);

$("#choose div").html(html);

}

div里面的mark都是JS生成的,我想找到里面所有a标签的元素集合。
使用原生JS
var chooseElement = document.querySelector("#choose div");
var chooseA = chooseElement.querySelectorAll("a");
console.log(chooseA);
原生JS结果:

我用了 JQ来获取
var chooseA = $("#choose div").find("a"); //找到所有的a
console.log(chooseA);
找出来不对了?

 标签:jqueryjavascript

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv6 码匠
阿***灯 页面重构设计 6年前#1

把查找a的代码添加在mark生成后


var html = '';
for (var k = 0; k < len; k++) {
    console.log(chooseObj[k]);     
    if (chooseObj[k]) {
        html += '<mark>' + chooseObj[k] + '<a class="a' + k + '" data-index="' + k + '"  href="javascript:;">x</a></mark>'
        // 生成结构的时候在行间保存对象的key值
        // html += `<mark>${chooseObj[k]}<a data-index="${k}" href="javascript:;">x</a></mark>`
    }
}



$("#choose div").html(html);

var chooseA = $("#choose div").find("a");

console.log(chooseA);
console.log(chooseA.length);
Lv5 码农
mi***02 学生 6年前#2

怎么不对呢,是为空还是其他的

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取