JQUERY onclick链接打开为" undefined"空白页

时间:2015-04-20 04:12:31

标签: jquery

需要快速帮助!!为下面的HTML容器点击事件创建了一个脚本。

  1. 当我点击带有<h3></h3><p></p>的第二个标记时,链接会在同一窗口中打开而不会出现任何错误。

  2. 但是,带图片的第一个标记会显示带有&#34; http://www.url.com/undefined&#34;

  3. 的网址

    需要一个解决方案来打开第二个<a>标记元素之类的精确链接。

    由于

    HTML

    <div class="isotope-tile ng-scope isotope-tile--large" data-isotope-tile="{modifier:'large', order:{mobile:1, desktop:1}}" style="position: absolute; left: 0px; top: 0px;">
    <div class="parbase teaser tile-1">
        <div id="_content_sites_sg_en_personal_discover_jcr_content_par_landing_tiles_tile-1" class="campaign ">
            <div class="parbase tile section" style=""> 
                <div id="filler-tile-1">
                    <a href="legacy.html" class="tm-blue tileEle">
                        <div class="image">
                            <img src="image.jpg">
                            <img class="icon" src="badge.png" alt="">
                        </div>
                    </a>
                    <a href="legacy.html" class="content" onclick="ga('send','event', 'tile', 'clickthrough', 'Legacy',{'dimension6':'legacy'});">
                        <h3>TM Legacy</h3>
                        <p>TM Legacy secures financial protection and peace of mind that lasts beyond your lifetime. </p>
                    </a>
                </div>      
            </div>
        </div> 
    </div>
    

    JS

    $('.isotope-tile a.tm-blue').click(function(e) { 
         e.stopPropagation();
    });
    
    
    $("div.isotope-tile").each( function()
    {
        $(this).click(function(event)
        {
            if(!$(event.target).attr("href")){
                location.href = $(event.target).parent().attr("href");
            }
            else{
                location.href = $(event.target).attr("href");
            }
        });
    });
    

1 个答案:

答案 0 :(得分:1)

点击

时的第一个标签
 <img src="image.jpg">

IF condiotion中的jquery代码执行

 if(!$(event.target).attr("href")){
        location.href = $(event.target).parent().attr("href");
    }

jquery代码试图找出图像标签专利中的href标签。和image的父级是

<div class="image">

它不包含href标记。所以它给出了未定义的值。

所以if条件中的jquery代码应该是

if(!$(event.target).attr("href")){
        location.href = $(event.target).parent().parent().attr("href");
    }

我认为它会对你有所帮助。如果还有任何问题,请告诉我

您的jquery代码可以写为

$("div.isotope-tile").each( function()
{
    $(this).click(function(event)
    {
        if(!$(event.target).attr("href")){
            location.href = $(event.target).closest("a").attr("href");
        }
        else{
           location.href = $(event.target).attr("href");
          }
    });
});