在Chrome扩展程序中更改未触发的事件

时间:2014-09-04 12:02:39

标签: javascript google-chrome checkbox google-chrome-extension

我正在创建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');
    });


});

没有得到任何&#34;你好&#34;警报。我的扩展用户界面正常。

我尝试了以下但是他们也没有工作:

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

我正在使用jquery版本1.11.1

1 个答案:

答案 0 :(得分:1)

我认为问题在于异步执行。 如果没有getExtensionList代码,很难说肯定。

您显然是从getExtensionList创建元素,在$(document).ready的其余部分后执行,因此您的侦听器不会附加,因为DOM元素尚不存在。

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