相同的JQuery函数适用于一个链接,而不适用于另一个链接

Identical JQuery function is working for one link, not another

本文关键字:适用于 链接 一个 另一个 不适用 JQuery 函数      更新时间:2023-09-26

我有一个函数:

<script type="text/javascript">
    $(function() {
        $('#subbutton').click(function() {
            $('#subbutton').hide();
        });
    });
</script>

它只是让这个按钮在点击时隐藏起来:

 <a id="subbutton" class="button" href="javascript:TINY.box.show({url: 'follow',width:600,height:170,openjs:'initPopupLogin',opacity:30})"><span>Button</span></a>

现在,如果我尝试使用相同的功能,但在页面后面有一个链接,它就不起作用了(我已经删除了原来的按钮)下面是代码:

<div id="subbutton">
        <a href="#"><span>Button</span></a>
</div>

我试着把id放在锚里,在跨度里,这个链接似乎什么都不起作用。知道为什么不起作用吗?(我已经删除了原来的按钮,所以第二个按钮是页面上唯一的id)

请尝试使用.on来附加事件处理程序。我怀疑在您附加事件处理程序时按钮不在dom中。

$(document).on('click', '#subbutton', function() {
    $(this).hide();
});

既然我理解了问题,请编辑。您最好给按钮一个类,并使用类选择器。

.hide不会从页面中删除元素,因此您的选择器仍将在第一个元素上匹配。您需要使用.remove从DOM中删除第一个元素,以便第二个选择器可以工作。

此外,还有一些jQuery优化。不需要对$("#subbutton")的嵌套调用。往好了说,它更难维护,往坏了说,如果把它放在一个大循环中,可能会导致性能问题。这样更好。

$(function() {
    $('#subbutton').click(function() {
        $(this).remove();
    });
});

您在此之后缺少一个":

<a id="subbutton" class="button

Id必须是唯一的。那么它应该会起作用。

不要重用id,它们必须是唯一的。将id传递给函数

将您的javascript更改为:

 $(function() {
        $('#subbutton').live("click",function() {
          $(this).hide();
        });
    });​

http://jsfiddle.net/W2agx/

  • 也不要重复使用id。为希望能够一起选择的多个DOM元素使用一个类