【问题标题】:jQuery hover not working with dynamic elementsjQuery悬停不适用于动态元素
【发布时间】:2014-03-04 18:58:34
【问题描述】:

我从数据库中获取数据,根据匹配的数量,我想输出这个:

 <div id='link_delete_holder' style='position:absolute;left:590px;top:10px'>
            <img id='link_delete' src='images/account_related/icons/link_delete.png'/>
        </div>

我希望该图像在悬停时发生变化,所以我使用以下代码:

$('#link_delete').hover(function(){
    $(this).attr('src', 'images/account_related/icons/link_delete_h.png');
}, function(){
    $(this).attr('src', 'images/account_related/icons/link_delete.png');
    });

现在,问题在于它仅适用于第一条记录(显示的第一个 link_delete 图像),并且似乎不适用于其他图像。

【问题讨论】:

  • 尝试将id="link_delete"更改为class="link_delete",然后将$('#link_delete')更改为$('.link_delete')

标签: php jquery hover


【解决方案1】:

如果您要创建动态数据,请不要使用 ID 来获取它们,因为具有相同 ID 的两个元素是无效的 HTML。使用同名的类就可以了。

<div id='link_delete_holder' style='position:absolute;left:590px;top:10px'>
    <img class='link_delete' src='images/account_related/icons/link_delete.png'/>
</div>

此外,正如 Anoop Joshi 指出的那样,您不能直接使用 $('#link_delete').hover(...);,您需要使用委托并使用我上面所说的添加基于类而不是 ID 的委托,并且您应该使用 mouseentermouseleave 本质上就是 .hover(func(), func()) 正在做的事情。

$('.link_delete').on({
    mouseenter: function () {
        $(this).attr('src', 'images/account_related/icons/link_delete_h.png');
    },
    mouseleave: function () {
        $(this).attr('src', 'images/account_related/icons/link_delete.png');
    }    
});

编辑:

添加了一个有效的jsFiddle,它动态创建了图像,on hover 会更改图像,然后在您完成悬停时返回。

【讨论】:

    【解决方案2】:

    您应该将delegates 用于动态创建的对象。

    $(document).on("hover","#link_delete",function(){
      $(this).attr('src', 'images/account_related/icons/link_delete_h.png');
    });
    

    【讨论】:

    • 我认为这不是真正的问题。问题是他使用 id 而不是 class,因此 jQuery 选择器只匹配第一个元素,而且,他没有提到客户端的任何动态元素。
    • @JasonOOO 图像的 ID 为 link_delete
    • 但是你知道 ID 应该匹配一个元素并且应该是唯一的,它不像一个类,见证明! jsfiddle.net/4hE86/5
    • @JasonOOO 他只希望在该图像上具有悬停效果。那么问题出在哪里?
    • is it only works on the first record (the first link_delete image that gets displayed), and seems like it doesn't apply to other images
    猜你喜欢
    • 2011-10-02
    • 2018-06-18
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2014-01-06
    相关资源
    最近更新 更多