2012-06-04 113 views
0

我想在点击链接到ID时显示div。jQuery onclick不能使用href和img

的jQuery:

$('#tab-bar a').on('click', function(e){ 

    e.preventDefault(); 
    var nextPage = $(e.target.hash); 
    page(nextPage); 
    $("#pages .current").removeClass("current"); 
    nextPage.addClass("current"); 
    }); 

HTML:

<div id="pages"> 
    <div id="mainpage" class="current"> 
     <ul id="tab-bar"> 
    <li> 
    <a href="#mimik"><img src="img/mimik.jpg" alt="mimik"></img></a><br> 
    </li> 
     </ul> 
    </div> 

    <div id="mimik"> 
    <h2 style="color:red">Mimik</h2> 
    </div> 

当我在使用文字而不是像它的作品如我所愿。显示h2。 将图像作为“链接”显示空白页面。 我该如何解决这个问题?

问候 西蒙

+3

'mimik'应该是''mimik能 – fcalderan

+0

你给我们一个小提琴?或者至少不是工作代码? – gdoron

回答

3

这是因为当你有内部锚图像事件目标是img元素,当你点击它,它不具有任何hash财产。试试这个方法,我使用closest方法从目标元素中找到最接近的a元素。

$('#tab-bar a').on('click', function(e){ 
    e.preventDefault(); 
    var nextPage = $($(e.target).closest('a')[0].hash); 
    page(nextPage); 
    $("#pages .current").removeClass("current"); 
    nextPage.addClass("current"); 
}); 

或者,也可以使用其中this.hashthis将指向在其上附加事件的元素。

$('#tab-bar a').on('click', function(e){ 
    e.preventDefault(); 
    var nextPage = $(this.hash); 
    page(nextPage); 
    $("#pages .current").removeClass("current"); 
    nextPage.addClass("current"); 
}); 
+1

'this.hash'可能也适用?事件处理程序绑定到'a'元素。 – pimvdb

+0

是的,这将是最简单的解决方案:P – ShankarSangoli

+0

非常好!谢谢你们!很好的解释! –