代码之家  ›  专栏  ›  技术社区  ›  Rober.Ya

单击时锚点有一个子项

  •  0
  • Rober.Ya  · 技术社区  · 7 年前


    很快,我想把卡片做成一个块,当点击卡片中的任何地方时,返回锚点的href。
    现在的问题是,当我点击卡片的任何地方时,它会返回我点击的项目。
    代码显示了问题。


    谢谢你的帮助

    $(document).bind('click', function(e) {
      var ele = $(e.target);
      if (ele.hasClass('itemLink')) {
        // I want this part
        e.preventDefault();
        console.log(ele.attr('href'));
      } else {
        console.log(ele.attr('class'));
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="itemContainer" style="width: 200px;">
      <a class="itemLink" href="#">
        <div class="itemCard">
          <div class="itemHead">
            <img class="itemImage" src="image.png" style="width:200px; height:200px;">
            <h3 class="itemName">Item Name</h3>
          </div>
          <div class="itemDetails">
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
          </div>
        </div>
      </a>
    </div>
    2 回复  |  直到 7 年前
        1
  •  1
  •   Barmar    7 年前

    将事件处理程序绑定到锚点,而不是文档。

    $('a.itemLink').click(function(e) {
      e.preventDefault();
      console.log($(this).attr('href'));
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="itemContainer" style="width: 200px;">
      <a class="itemLink" href="#">
        <div class="itemCard">
          <div class="itemHead">
            <img class="itemImage" src="image.png" style="width:200px; height:200px;">
            <h3 class="itemName">Item Name</h3>
          </div>
          <div class="itemDetails">
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
          </div>
        </div>
      </a>
    </div>

    如果动态添加定位,请使用委派:

    $(document).on('click', 'a.itemLink', ...)
    
        2
  •  0
  •   arbuthnott    7 年前

    当你点击菜单中的任何地方时,听起来你想做些什么 a 标签,包括它的一个孩子。这应该有效:

    $(document).bind('click', function(e) {
      var ele = $(e.target).closest('a.itemLink');
      if (ele.length) {
        // the click was inside your anchor
        e.preventDefault();
        console.log(ele.attr('href'));
      } else {
        // the click was not in your anchor
        console.log('clicked not in anchor');
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="itemContainer" style="width: 200px;">
      <a class="itemLink" href="#">
        <div class="itemCard">
          <div class="itemHead">
            <img class="itemImage" src="image.png" style="width:200px; height:200px;">
            <h3 class="itemName">Item Name</h3>
          </div>
          <div class="itemDetails">
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
            <p class="itemDesc">item detail descriptins</p>
          </div>
        </div>
      </a>
    </div>