簡體   English   中英

動態插入的元素上的 Onclick 事件不會觸發

[英]Onclick event on dynamically inserted elements doesn't trigger

當我通過 JavaScript 將以下代碼插入到我的 HTML 中時, onclick事件不起作用( load_menu不運行)。 但是當我手動插入此代碼時,它可以工作。

<li class="dropdown">
    <a href="#" onclick="load_menu('dropdown-menu',10001)" data-toggle="dropdown">رباتیک<i class="icon-arrow open"></i></a>
    <ul class="dropdown-menu show" id="10001">
    </ul>
</li>

Javascript代碼:

function load_menu(m,id) {
    var t = 1000;
    if (m == 'dropdown') {
        if ($('div.container ul li[class="dropdown"]').length == 0) {
            loadXMLDoc("GET", "ContainerMenu.aspx?m=" + m + "&id=" + id, function (result) {
                document.getElementById(id).innerHTML = result;
                
                toggle_menu();
            });
            
        }
    }
    if (m == 'dropdown-menu') {
        if ($('div.container ul li ul[class="dropdown-menu"]').length == 0) {
            loadXMLDoc("GET", "ContainerMenu.aspx?m=" + m + "&id=" + id, function (result) {
                document.getElementById(id).innerHTML = result;
                
                toggle_menu();
            });
            
        }
    }
}

為什么會發生這種情況,我該如何解決?

document.body.innerHTML='<li class="dropdown"><a href="#" onclick="load_menu('dropdown-menu',10001)" data-toggle="dropdown">رباتیک<i class="icon-arrow open"></i></a><ul class="dropdown-menu show" id="10001"></ul></li>'

http://jsfiddle.net/955uM/您會注意到“下拉菜單”沒有突出顯示,也沒有包含在字符串中。 改用這個:

document.body.innerHTML='<li class="dropdown"><a href="#" onclick="load_menu('+"'dropdown-menu'"+',10001)" data-toggle="dropdown">رباتیک<i class="icon-arrow open"></i></a><ul class="dropdown-menu show" id="10001"></ul></li>'

當代碼中創建的 html 元素上的 onclick 不會觸發時,我遇到了這個問題。 在下面的示例代碼中,代碼中創建的按鈕顯示出來,但單擊時沒有任何反應

<html> 
<head>
<script language="javascript"> 
   alert("page is loading");
   function createbuttonincode() {
      var div=document.getElementById("testdiv");
      var button = document.createElement("button");
      var buttononclickstring = "javacript:testbuttonclick()";
      button.setAttribute ("onclick",  buttononclickstring);
      button.innerHTML = "button created by code";
      div.appendChild(button);
   }
   function testbuttonclick()
   {
       alert("button click event fired");
   }
</script> 
</head>
<body> 
<form> 
   <input type=button onclick="javascript:createbuttonincode()"  value="Create new button"/> 
<div id="testdiv"></div>
</form> 
</body>

但是如果我添加這個元標記

<meta http-equiv="X-UA-Compatible" content="IE=edge">

在頭部然后動態創建的事件上的點擊事件觸發,我看到警報。

似乎這不是 Edge 瀏覽器的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM