jQuery 3.2.1-delegate()-动态创建按钮,delegate()对整个文档而不是元素触发

jQuery 3.2.1-delegate()-动态创建按钮,delegate()对整个文档而不是元素触发,jquery,Jquery,理解为什么会发生这种情况有些困难。我有一个动态创建的按钮。我需要能够点击那个按钮来触发其他东西。在jQuery3.2.1中,委托应该遵循以下格式 $(document).delegate('button.new', 'click', function () { alert('test'); }); 当我单击按钮时,实际上会触发警报()。但是,由于我猜测的$(文档)部分,当我点击页面上的任何其他内容时,它也会触发警报 此版本的jQuery中是否可能存在委托()问题?绝对不可能升级jQue

理解为什么会发生这种情况有些困难。我有一个动态创建的按钮。我需要能够点击那个按钮来触发其他东西。在jQuery3.2.1中,委托应该遵循以下格式

$(document).delegate('button.new', 'click', function () {
    alert('test');
});
当我单击按钮时,实际上会触发警报()。但是,由于我猜测的$(文档)部分,当我点击页面上的任何其他内容时,它也会触发警报

此版本的jQuery中是否可能存在委托()问题?绝对不可能升级jQuery版本,因此我在版本3.2.1提供的范围内工作

想法?

delegate()
在3x中被弃用。
您应该改用()上的


请注意,事件和子选择器的位置已交换。

因此,这似乎是按照预期的方式工作的,但我必须阅读
.on()
的一些更详细的信息才能理解为什么这不起作用

最后,我不得不将动态创建的按钮包装到另一个div中,然后以包装div为目标,而不是像我在其他解决方案中发现的那样,使用
document
body
。否则,外部元素总是触发器,而不是动态创建的按钮

    // Button that I wanted created after another button is clicked
    resultsBtn = '<button class="btn btn-secondary see-results">See Results</button>';

    // An empty div is inserted
    btnGroup.append('<div class="btn-wrap"></div>');

    // Click event that creates the button
    btnNo.click(function(){

      // Inserting the button into the empty div
      $('.btn-wrap').append(resultsBtn);
    });

    // Targeting the button inside the empty div 
    $('.btn-wrap').on('click', seeResults, function(){
      alert('test');
    });
//我希望在单击另一个按钮后创建的按钮
resultsBtn='查看结果';
//插入一个空div
btnGroup.append(“”);
//单击创建按钮的事件
btnNo.单击(函数(){
//将按钮插入空div
$('.btn wrap').append(resultsBtn);
});
//瞄准空div中的按钮
$('.btn wrap')。在('click',请参见结果,函数(){
警报(“测试”);
});
希望这是有意义的。

事实上,我已经试过了。('click'),它也在做同样的事情。整个“文档”是触发器,而不仅仅是按钮。我切换回委托,但现在我确实看到它已被弃用。但是,是的,仍然有同样的问题,文件是触发因素。所以我可以直接点击页面的边距,它会触发警报。
    // Button that I wanted created after another button is clicked
    resultsBtn = '<button class="btn btn-secondary see-results">See Results</button>';

    // An empty div is inserted
    btnGroup.append('<div class="btn-wrap"></div>');

    // Click event that creates the button
    btnNo.click(function(){

      // Inserting the button into the empty div
      $('.btn-wrap').append(resultsBtn);
    });

    // Targeting the button inside the empty div 
    $('.btn-wrap').on('click', seeResults, function(){
      alert('test');
    });