2015-09-21 36 views
0

在應用程序中通過單擊表中的超鏈接,使用表打開div,根據鏈接過濾內容,開發了一項功能。Chrome中的Jquery addEventListener,帶參數

的聯繫是在一個jQuery函數動態創建並具有以下屬性:

$("#pending div#list").bind("data_loaded", function (event, records) { 
    var tableBody = $("tbody", $(this)); 
    for (var index = 0; index < records.length; index++) { 
     var rowHtml = '<tr id="' + rowid + '"><input type="hidden" name="' + rowid + '" id="' + rowid + '" value="1"/>' + 
      '<td><a class="populate" id="' + rowid + '" onclick="javascript:clickHandler(' + rowid + ');">' + docid + '</a></td>' + 
        '</tr>'; 
     tableBody.append($(rowHtml)); 
    } 
}); 

在Mozilla Firefox瀏覽器,它完美的罰款。但是在Chrome中,我無法調用clickHandler函數。 根據我在Google上找到的信息,說Inline JavaScript不會被執行。

您可以點擊這裏:https://developer.chrome.com/extensions/contentSecurityPolicy

但現在談到我的難處。

我改變了我的超鏈接:

'<td><a class="populate" id="' + rowid + '" onclick="clickHandler(' + rowid + ');">' + docid + '</a></td>' + 

我創造了這個jQuery的:

document.addEventListener('DOMContentLoaded', function() { 
document.getElementById([parameter]).addEventListener('click', function() { clickHandler([parameter]); },false); 
}); 

誰能解釋我如何可以傳遞參數的rowid jQuery的?

謝謝。

問候。

+0

請發送請求更多的代碼。這個'td'在哪裏被創建?代碼是什麼? – Buzinas

+0

@Buzinas我編輯了這個問題。謝謝。 – PookPook

回答

1

你的代碼片段暗示你在Javascript中使用原始DOM操作而不是JQuery(這很好!它的速度肯定更快),但是由於你提到了JQuery,這就是我所建議的。

代替以上您的addEventListener調用,儘量

$('div#list').on('click', 'a.populate', function() { 
    clickHandler($(this).attr('id')); 
}); 

,然後刪除「的onclick」屬性的錨標籤的聲明瞭。

這將添加一個事件監聽器給所有具有'populate'類的錨定器,它將調用clickHandler傳遞由該錨定器標記'id'組成的字符串參數。

+0

謝謝。然而,我實現了他們的建議,但仍然無法調用clickHandler()函數。我在代碼中放置了一個斷點,但不會去那裏。 – PookPook

+1

啊我明白了。問題在於應用事件偵聽器時尚未創建元素。我編輯了我建議的'on'片段。給那個鞭子! – oflahero

+0

你解決了我的問題!非常感謝你!!!主要由替代解決方案... – PookPook