【问题标题】:Showing just one instance of a class with jQuery使用 jQuery 只显示一个类的实例
【发布时间】:2009-03-11 12:04:35
【问题描述】:

我已经用谷歌搜索过这个,但没有用(可能搜索技能很差)。

我的问题可能很简单,我只是希望 mouseover 事件仅在列表项被鼠标悬停时显示包含的 div (.action) (ui-state-default)。

这是标记

<ul id="column-2" class="connectedSortable">
    <li class="ui-state-default">feature
        <div class="action">
            <img src="delete.png" class="delete" alt="Delete this Story">
            <br />
            <img src="duplicate.png" class="delete" alt="Duplicate this Story">
        </div>
    </li>
    <li class="ui-state-default">forward
        <div class="action">
            <img src="delete.png" class="delete" alt="Delete this Story">
            <br />
            <img src="duplicate.png" class="delete" alt="Duplicate this Story">
        </div>
    </li>
</ul>

还有 JavaScript

$(function() {  
    $(".ui-state-default").mouseenter(function(){
        $(".action").show();
    }).mouseleave(function(){
        $(".action").hide();
        });
});

现在我意识到这将显示 .action 的每一次出现 - 但我如何确保它仅在其父 li 中显示它?我尝试过使用 jquery 父/子争论,但失败得很惨。

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery css


    【解决方案1】:
    $(function() {
      $(".ui-state-default).mouseenter(function() {
        $(this).find(".action").show();
      }).mouseleave(function() {
        $(this).find(".action").hide();
      });
    });
    

    或者只使用 hover() 事件:

    $(function() {
      $(".ui-state-default").hover(function() {
        $(this).find(".action").show();
      }, function() {
        $(this).find(".action").hide();
      });
    });
    

    代替:

    $(this).find(".action")
    

    你也可以这样做:

    $(this).children(".action")
    

    或任何其他选择它的方式。

    【讨论】:

    • 该死!从来没想过 find() :( 非常感谢 Cletus
    • 是的,jQuery 很有趣。开始意识到您可以使用这些工具做什么需要一点时间。不过喜欢它。 :)
    • 确实,纯粹的社区支持和大量文档/博客令人惊叹。此外,hover 的处理速度似乎比 mouseenter/leave 快一点 - 很有趣。
    【解决方案2】:

    您应该将“.action”限制为当前上下文(您悬停的列表项):

    $(function (){
      $(".ui-state-default").hover(
        var listItem = this;
        function (){
          $(".action", listItem).show();         
        }
        ,
        function (){
          $(".action", listItem).hide();         
        }
      );
    });
    

    【讨论】:

    • 感谢 SebaGR,但 Cletus 的速度要快一些 ;) + 投票给另一个正确答案
    猜你喜欢
    • 2022-12-16
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多