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 src从imagepop函数内部读取属性会更好吗?
**注意,我还没有开发页面,因此每个div都有一个唯一的ID,并且不打算这样做.<div>标签内的所有元素都没有分配ID.
......我想把它变成......
对于它的价值,我不会.相反,我会使用这样的函数:
$("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所有主要的 - 也可能是所有次要的 - 浏览器都支持反射属性.)