当前位置: 首页 > 知识库问答 >
问题:

在jQuery元素停止工作之前,只能单击它一次

潘哲
2023-03-14

我有以下代码:

$("#another").click(function() {
    $('#another').replaceWith('<a id="another" class="btn btn-primary btn-mini disabled"><i class="icon-refresh icon-white"></i>&nbsp;Loading...</a>');
    $.get('another.php', { 'cycle' : i }, function(data) {
        $('tbody').append(data);
        $("#another").replaceWith('<a id="another" class="btn btn-primary btn-mini"><i class="icon-plus icon-white"></i>&nbsp;Load another cycle</a>');
    });
    i++;
});

当我单击具有另一个id的元素时,它会加载一次。点击一次之后,就再也不行了。

共有2个答案

况博容
2023-03-14

您将用一个没有事件侦听器的节点替换该节点。

基本上在点击之前

[#another]
    ^
    |
[clickListener]

然后生成另一个按钮( 加载...)

[#another]     [#another](2)
    ^
    |
[clickListener]

然后我们用布局中的第二个替换第一个:

[#another]               [#another](2)
    ^
    |
[clickListener]

哦,等等,我的模型什么都没变。这是因为click侦听器链接到了第一个对象(不再可见),而可见的对象仍然存在。

那么代码方面,这意味着什么呢?这仅仅意味着您需要将事件侦听器重新连接到那里。我会这样做的

var onClick=function(){
    $('#another').replaceWith('<a id="another" class="btn btn-primary btn-mini disabled"><i class="icon-refresh icon-white"></i>&nbsp;Loading...</a>')
    .click(onClick); // <--- this is the important line!

    $.get('another.php', { 'cycle' : i }, function(data) {
        $('tbody').append(data);
        $("#another").replaceWith('<a id="another" class="btn btn-primary btn-mini"><i class="icon-plus icon-white"></i>&nbsp;Load another cycle</a>');
    });
    i++;
}

$("#another").click(onClick);
怀刚毅
2023-03-14

如果用另一个元素替换该元素,则所有侦听器都将被移除。为了避免这种情况,您可以将侦听器再次添加到新元素中

$('#another').bind('click', function() {
  //do something
});

或者将代码移动到函数中,并将onclick属性添加到元素中。

onclick="my_function();"

在您当前的javascript中

$('#another').replaceWith('<a id="another" class="btn btn-primary btn-mini disabled" onclick="my_function();"><i class="icon-refresh icon-white"></i>&nbsp;Loading...</a>');
 类似资料:
  • 如果孩子在焦点中(已被点击),我怎么能失去父母的悬停状态?我有一个菜单箭头(用OPEN代替了它,以减少代码),它在悬停状态下打开我的菜单和菜单项,当我单击它们时,菜单项就会聚焦。在菜单项点击后,我希望能够失去对我父母的关注,这样菜单就会消失。 如果可能的话,我会尽量避免使用javascript,这是我最好的尝试... 这是我的html null null 编辑 我在一个单页应用程序上使用Angul

  • 所以我使用这个代码来显示菜单中的深度3元素(wordpress): 问题是,当我悬停在一个带有子菜单的元素上时,所有带有子菜单的元素都会显示出来。 问题是: 如何只显示一个子菜单,我在我的鼠标悬停的时刻? 很抱歉添加了标记,无法添加“jquery” 编辑: HTML:

  • 我将测试一个网络应用程序。在我的表中有一个按钮可以选择所有条目。我尝试过: selenium单击按钮,但什么也没发生。(还有send_Keys(Keys.Return))应用程序是用GXT开发的,我发现按钮后面有很多javascript。是否有可能等待事件加载器准备就绪?在单击之前等待可以解决问题,但不是自动测试的解决方案。

  • 我有一个理论来解释为什么第一个按钮不能点击。 从PrimeFaces SelectOneButton展示: SelectOneButton是一个输入组件,用于使用常规按钮而不是单选按钮选择选项 我可以做变通办法,但我找不到为什么它突然停止工作,宁愿找到解决办法! 任何帮助都很感激! 更新

  • null GrantPermissionRule是否停止了为其他人所宣传的工作?