0

如何与仍在 div 元素中的所有图标分开?

基本上,在 div 里面,我有 4 件事要点击。最后一个是为整个 div 元素点击链接。中间元素用于特定的图标点击。但是现在,对于特定的图标点击,我希望点击连接到他们自己的链接。例如,如果单击 github png ,它应该转到 github 链接,但现在 google div 链接会覆盖它。无论我点击什么,我都只连接到一个链接,我不打算这样做。

谢谢

<script type="text/javascript">
    $(document).ready(function(){
        $(".Apps").click(function(){
            window.open($(this).find("a").last().attr("href"));
            return false;
        });                             
    });
</script>

    <div class="Apps">
        <p><b>Web Dev Project 3</b><br><i>(coming soon)</i></p>
        <a href="https://github.com/" target="blank">
        <img src="https://github.com/apple-touch-icon-114.png" width="30" height="30"/></a> 
        <a href="http://google.com" target="blank">
        <img id="logo" src="http://cclub.slc.engr.wisc.edu/images/Under-Construction.gif" width="30" height="30"/></a>
        <a href="http://google.com" target="blank"></a>
    </div>
4

4 回答 4

1

<a>确实没有“与”包含元素“连接”这样的概念。取而代之的是,为什么不直接在图标上捕获“点击”事件<div>并过滤掉不在图标上的事件:

$('div.Apps').on("click", ":not(a img)", function() {
  window.location = "http://google.com";
});

标记的完成方式,很难说容器内会有不是图标的屏幕区域,但大概你有填充/边距或其他东西。

于 2013-09-18T01:43:33.000 回答
0

如果我是你,我会为 div 和 a 链接分配不同的 id,然后在特定链接说明中只是阻止点击的默认行为;

$(´#aLinkId´).on(´click´, function(){
    event.preventDefault();
    event.stopPropagation();
    window.open(whatever here);
});

$(´#aDivId´).on(´click´, function(){
    window.open(other whatever here);
});
于 2013-09-18T01:47:13.477 回答
0

我这是你在找什么?

http://jsfiddle.net/gespinha/WPsbb/2/

   $(document).ready(function () {
       $(".Apps").click(function () {
           window.open($(this).find("a").last().attr("href"));
           return false;
       });
       $(".Apps > a").click(function () {
           window.open($(this).attr("href"));
           return false;
       });
   });
于 2013-09-18T01:47:26.760 回答
0

排除锚点:

$(".Apps").click(function(e){
    if (! $(e.target).closest('a').length ) {
        window.open($(this).find("a").last().attr("href"));
        return false;
    }
});
于 2013-09-18T01:44:46.683 回答