更改 Chrome 扩展程序中未触发的事件复选框

Change event not firing for checkbox in Chrome extension

本文关键字:事件 复选框 Chrome 扩展 程序 更改      更新时间:2023-09-26

我正在创建一个Chrome扩展程序,我正在动态创建复选框。现在在文档准备就绪中,我已经放置了代码来处理复选框的"选中"更改事件,但代码无法按预期工作,因为单击它时没有收到任何警报。

创建动态复选框:

function createExtensionUI(extensionListArray){
var bkg = chrome.extension.getBackgroundPage();
    var extensionLength = extensionListArray.length;
    for(var i=0; i<extensionLength; i++){
        var extensionObject = extensionListArray[i];
        if(extensionObject.type == "extension"){        
            var checkbox = '<label><input type="checkbox" class= "extensionbox" id= ' + extensionObject.id  + '/>'+extensionObject.shortName+'</label>';
            $('#extensionList').append(checkbox);
            bkg.console.log(checkbox);
        }
    }
}

动态复选框 HTML 代码示例:

 <label><input type="checkbox" class= "extensionbox" id= "llegcghmokaemodgdddnchiijfdbfnlg"/>Coremetrics Bar for Chrome</label>

变更事件代码:

$(document).ready(function(){
    chrome.management.getAll(getExtensionList);
    $("input[type=checkbox]").change(function() {
        alert('hello');
    });

});

我没有收到任何"你好"警报。我的扩展 UI 正常。

我尝试了以下方法,但它们也没有奏效:

$("input[type=checkbox]").change
$(".extensionbox").change

我正在使用jquery版本1.11.1

我认为

问题出在异步执行上。不过,如果没有您的getExtensionList代码,很难确定。

你显然是从getExtensionList创建你的元素,它在$(document).ready的其余部分之后执行,所以你的听众不会附加,因为DOM元素还不存在。

要修复,请将附加侦听器的代码移动到createExtensionUI末尾,无论如何它在逻辑上属于那里。