同时点击多个元素,这是什么'这个'

时间:2011-08-24 19:28:47

标签: jquery jquery-selectors if-statement

我觉得必须有更好的表达以下条件的方法:

if(node.is('a') || node.parent().is('a')){
        foo
    }

我想要这个包含在锚标记中的元素,并且能够在直接目标或父目标时轻松检索/操作href。

<a href="#"><img src="#" /></a>

如上所述单击图像时,事件似乎只抓取<img>而不是<a>包裹它。我希望能够通过一次点击来玩这两种方式。

关于我正在做的更多细节: 尝试创建一个界面,允许您单击以内联编辑某些文本区域(其中一些具有它们周围的链接)和图像。我有一个.editable课,我正在听。我有它使用常规链接和文本;试图弄清楚如何上传图片。 more code

3 个答案:

答案 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;
});

这里是小提琴http://jsfiddle.net/LZxRd/2/

答案 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');