Javascript jqueryonclick只工作一次

Javascript jqueryonclick只工作一次,javascript,jquery,Javascript,Jquery,我已经检查了这个问题的几个答案,我没有得到任何工作。我有一组按钮将触发Ajax调用,该调用将用更新信息的新按钮替换这些按钮。这在第一次单击时有效,但在任何后续单击时无效 按钮组如下所示: <div class="btn-toolbar" role="toolbar" aria-label="Voting Toolbar"> <div class="leanVote_target"> <div class="btn-group mr-2" ro

我已经检查了这个问题的几个答案,我没有得到任何工作。我有一组按钮将触发Ajax调用,该调用将用更新信息的新按钮替换这些按钮。这在第一次单击时有效,但在任何后续单击时无效

按钮组如下所示:

<div class="btn-toolbar" role="toolbar" aria-label="Voting Toolbar">
    <div class="leanVote_target">
        <div class="btn-group mr-2" role="group" aria-label="Lean Votes">
            <button type="button" id="2_-3" {% if vote.leanVote == -3 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>Left</button>
            <button type="button" id="2_-2" {% if vote.leanVote == -2 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>2</button>
            <button type="button" id="2_-1" {% if vote.leanVote == -1 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>1</button>
            <button type="button" id="2_0" {% if vote.leanVote == 0 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>Center</button>
            <button type="button" id="2_1" {% if vote.leanVote == 1 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>1</button>
            <button type="button" id="2_2" {% if vote.leanVote == 2 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>2</button>
            <button type="button" id="2_3" {% if vote.leanVote == 3 %} class="voteButton btn-sm btn-success"{% else %} class="voteButton btn-sm btn-primary"{% endif %}>Right</button>
        </div>
    </div>
</div>
为什么不在('click')上注册
。如何让它响应无限次

多谢各位

$(".btn-group").on("click", '.voteButton', function( event ) {
您的委托绑定位于btn组上,但看起来您正在动态创建btn组。在未动态创建的对象上进行委托绑定

由于要将html附加到三个元素中的一个,因此可以委托绑定它们

$(".leanVote_target, .credVote_target, .controlVote_target").on("click", '.btn-group .voteButton', function( event ) {
您的委托绑定位于btn组上,但看起来您正在动态创建btn组。在未动态创建的对象上进行委托绑定

由于要将html附加到三个元素中的一个,因此可以委托绑定它们

$(".leanVote_target, .credVote_target, .controlVote_target").on("click", '.btn-group .voteButton', function( event ) {
上面的条件是使用.html()替换btn组,因此您放置侦听器的$(“.btn组”)将替换为新的btn组。您可以通过将侦听器放置在DOM中不会被替换的元素上来解决问题

$(".btn-toolbar").on("click", '.voteButton', function( event ) {
上面的条件是使用.html()替换btn组,因此您放置侦听器的$(“.btn组”)将替换为新的btn组。您可以通过将侦听器放置在DOM中不会被替换的元素上来解决问题

$(".btn-toolbar").on("click", '.voteButton', function( event ) {

$(“.voteButton”)。在(“单击”上,函数(事件){should workNo,因为这些是btn组的嵌套元素,btn组是动态创建的$(“body”)。在(“单击”、'.btn group.voteButton',函数(事件)那么这个呢?它会起作用吗?当然,这是一个选项。选择更高的元素进行绑定取决于OP。这个解决方案应该可以解释问题。他也可以选择将绑定委托给附加html的三个元素。$(“.voteButton”)。on(“单击”,函数(事件){应该工作否,因为这些是btn组的嵌套元素,btn组是动态创建的$(“body”)。在(“click”、“.btn group.voteButton”上,函数(事件)这样做怎么样?行吗?当然,这是一个选项。选择更高的元素进行绑定取决于OP。不过,这个解决方案应该可以解释问题。他也可以选择将绑定委托给附加html的三个元素。当您用新的DOM元素替换DOM元素时,您还可以删除已添加的绑定当您用新的DOM元素替换DOM元素时,您也会删除原始DOM元素上的绑定。
$(".btn-toolbar").on("click", '.voteButton', function( event ) {