2

我正在創建一個Chrome擴展,其中我正在動態創建該複選框。現在,在文檔準備就緒的情況下,我已經放置了代碼來處理複選框的「已選中」更改事件,但代碼無法按預期工作,因爲我單擊它時沒有收到任何提醒。更改事件未在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'); 
    }); 


}); 

我沒有收到任何「你好」的提醒。我的擴展用戶界面正常。

我曾嘗試以下,但他們也沒有工作:

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

我使用jQuery版本1.11.1

+0

控制檯中的任何錯誤? – 2014-09-04 12:04:48

+0

劇本在哪裏?它是否與html相同? – WisdmLabs 2014-09-04 12:09:19

+0

@AlexArt。在控制檯中沒有錯誤。 – RanRag 2014-09-04 12:14:09

回答

1

我認爲問題出在異步執行。 儘管沒有你的getExtensionList代碼,但很難說。

你顯然是從getExtensionList,這被的$(document).ready休息後執行創建你的元素,讓你的聽衆不重視,因爲DOM元素還不存在。

要修復,將附加聽衆的代碼移動到createExtensionUI的末尾,無論如何它都屬於邏輯。

+0

謝謝。問題修復.. !!! – RanRag 2014-09-04 12:29:23

相關問題