On链接上的Click事件,但只有一个

时间:2015-12-23 19:08:40

标签: javascript jquery html

我的问题刚刚在我的画廊页面上曝光。 我有JavaScript来处理用户菜单选择,但其中一个选项是返回主页,但它没有工作,因为On Click事件接管了页面上的所有链接,有没有办法解决这个问题?我在网上搜索了答案,但没有运气,谢谢。



$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $("a").click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});

<ul id="nav">
  <li><a href="#" id="here">Gallery</a>
    <ul>
      <li><a href="#" data-albumid="images/gallery/fld01/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld02/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld03/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld04/">2015</a></li>
      <li><a href="#" data-albumid="images/gallery/fld05/">2015</a></li>
    </ul>
  </li>
  <li><a href="index.html" id="home">Back to home</a></li>
  <!-- This one never works! -->
</ul>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:5)

您在所有链接上提供了return false,这使得您的其他&#34;正常&#34;链接不起作用。您可以:not运营商:

$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $("a:not(#home)").click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});

或者只将事件绑定到href=#

$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $('a[href="#"]').click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});

因此它不会影响其他链接。

答案 1 :(得分:1)

为您希望以相同方式运行的链接提供类:

<ul id="nav">
  <li><a href="#" id="here">Gallery</a>
    <ul>
      <li><a href="#" class="mylink" data-albumid="images/gallery/fld01/">2014</a></li>
      <li><a href="#" class="mylink" data-albumid="images/gallery/fld02/">2014</a></li>
      <li><a href="#" class="mylink" data-albumid="images/gallery/fld03/">2014</a></li>
      <li><a href="#" class="mylink" data-albumid="images/gallery/fld04/">2015</a></li>
      <li><a href="#" class="mylink" data-albumid="images/gallery/fld05/">2015</a></li>
    </ul>
  </li>
  <li><a href="index.html" id="home">Back to home</a></li>
</ul>

然后像这样更改您的事件绑定:

 $(".mylink").click(function() { // do what you want here }

它更干净,并且根据他们的目的使用类。

答案 2 :(得分:0)

另一种方法是unbind单个<a>代码的点击事件,

$( 'a[href="index.html"]').unbind( "click" )