需要快速帮助!!为下面的HTML容器点击事件创建了一个脚本。
当我点击带有<h3></h3><p></p>
的第二个标记时,链接会在同一窗口中打开而不会出现任何错误。
但是,带图片的第一个标记会显示带有&#34; http://www.url.com/undefined&#34;
需要一个解决方案来打开第二个<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");
}
});
});
答案 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");
}
});
});