我觉得必须有更好的表达以下条件的方法:
if(node.is('a') || node.parent().is('a')){
foo
}
我想要这个包含在锚标记中的元素,并且能够在直接目标或父目标时轻松检索/操作href。
<a href="#"><img src="#" /></a>
如上所述单击图像时,事件似乎只抓取<img>
而不是<a>
包裹它。我希望能够通过一次点击来玩这两种方式。
关于我正在做的更多细节:
尝试创建一个界面,允许您单击以内联编辑某些文本区域(其中一些具有它们周围的链接)和图像。我有一个.editable
课,我正在听。我有它使用常规链接和文本;试图弄清楚如何上传图片。 more code
答案 0 :(得分:1)
function whoGotClicked(who){
if (node.is("a"))
alert("im an anchor");
else
alert("im a"+node.get(0).tagName);
}
$("img").click(function(e){
node=$(this).parent();
whoGotClicked(node);
return false;
});
答案 1 :(得分:1)
var $img = $(this)
, $a = $img.parent('a');
if($a.length) {
//Do stuff if img is in anchor
}
如果没有锚,长度将为0.这是一个jsfiddle来演示它http://jsfiddle.net/Akkuma/2UMvj/
另一种方法是点击所有a
,但我假设您只在点击img
时才需要此逻辑。
如果您需要仅在点击a内部img
时启动代码,则可以执行此操作
$('a').delegate('img', 'click', function () {
var $img = $(this)
, $a = $img.parent();
});
这方面的一个例子是http://jsfiddle.net/Akkuma/BS54P/
答案 2 :(得分:1)
您可以通过将点击事件附加到您的链接来获取两者,从父级可以过滤到子级。像这样......
$('a').click(function(){
var thilink = $(this).attr('href');
var thiscontent = $(this).html();
});
修改强>
或者如果图像是关注的对象,上面的函数,你可以添加,
var thisimg = $(this).find('img');
\\then you can access any number of properties including src and manipulate them via
var currentsrc = thisimg.attr('src');