在jquery中访问div的子进程

时间:2015-05-22 21:57:16

标签: jquery

function createPicItem(num) {
    $("<div></div>")
        .addClass("merchPic")
        .append($("<img/>")
                .attr("src", merch[num].picAdd)
               ).appendTo("#merchCatalog");
}//End of function CreatePicItem
//--------------------------------------------------
$("#merchCatalog div.merchPic").click(function () {
    alert($(this+">img").attr("src"));
});

当点击div时,我想提醒src它的内部图像。

但是当我点击它时没有任何反应......甚至没有弹出警告对话框。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我使用了find。 find和children之间的区别在于find遍历DOM。虽然这里没有太大的内容所以它并不重要(但是关于两个here的速度有一个有趣的讨论)

alert($(this).find("img").attr("src"));

fiddle显示了它的实际效果。

根据建议您可以同样使用children

alert($(this).children("img").attr("src"));

但有几点需要注意:

  1. 在设置点击处理程序(createPicItem())之前运行$("#merchCatalog div.merchPic").click非常重要,否则它将无法附加任何内容。可以看到一个很好的解决方案here

  2. 如果您查看控制台(开发人员工具),您会注意到会引发错误。该错误告诉您选择器$(this+">img")不起作用。故事的寓意,检查控制台!

答案 1 :(得分:0)

尝试alert($(this).children("img").attr("src"));这将在div的第一级搜索图像元素