jQuery:如何将"src"属性写入子元素的Onclick函数参数中

Bra*_*dev 0 javascript jquery attributes onclick

我正在使用jQuery重写DOM以将无JS HTML页面转换为JS驱动器页面.我在转换图像链接时遇到了一个小故障.在原始代码中我有:

<div class="f">
   <a href="images/Fig-03-2.png" target="_blank">
      <img src="images/fig-03-2.png" alt="Fig 3.3" />
   </a>
</div>
Run Code Online (Sandbox Code Playgroud)

......我想把它变成:

<div class="f">
   <a>
      <img src="images/fig-03-2.png" alt="Fig 3.3" onclick="imagepop("fig-03-2.png")/>
   </a>
</div>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何编写onclick属性,以便它包含img src值作为imagepop参数.我试过了:

$(".f a").attr('onclick', 'imagepop(' + $(this).attr('src') + ')' );
Run Code Online (Sandbox Code Playgroud)

...但$(this).attr('src')返回"未定义".

我该如何修复我的代码行?或者img srcimagepop函数内部读取属性会更好吗?

**注意,我还没有开发页面,因此每个div都有一个唯一的ID,并且不打算这样做.<div>标签内的所有元素都没有分配ID.

T.J*_*der 6

......我想把它变成......

对于它的价值,我不会.相反,我会使用这样的函数:

$("div.f a img").click(function() {
    imagepop(this.src);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

可能包含在ready处理程序中的那一行的作用是:如果用户单击该图像,它会执行该操作imagepop并取消该事件,其中(除其他外)会阻止链接触发.

它被称为渐进增强.启用JavaScript的用户代理将使用上述内容,未启用JavaScript的用户代理仍会看到并关注该链接.请记住,用户代理不仅仅是浏览器,还包括爬虫,蜘蛛等,是的,禁用JavaScript的浏览器.


更新:如果你真的想在链接级别(可能更像键盘)处理它,而不是图像级别,那么:

$("div.f a").click(function() {
    var img = $(this).find("img");
    if (img[0]) {
        imagepop(img[0].src);
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

...因为它是img,而不是a,具有的元素src.(并且不需要在attr这里使用,src所有主要的 - 也可能是所有次要的 - 浏览器都支持反射属性.)