开发者问题收集

onclick 函数无法在 .append 中起作用?

2015-03-03
3368

我尝试使用 javascript 和 jquery 创建 div 标签。我尝试将 onclick 函数应用于 div 标签,但这不起作用?

var header = '<div id = "header" style="height:150px; width:500px; background:#a2a2a2;" ></div>';
document.body.insertAdjacentHTML('beforeend',header);
$("#header").append('<div id="con" style="height:20%; width:30%; background:orange;" onclick="alert('hello world')"></div>');

在代码中,我在 div id="con" 标签内使用了 onclick 函数,但不起作用?但我使用了

$("#header").append('<div id="con" style="height:20%; width:30%;  background:orange;" onclick="mufunc();"></div>');
function mufunc(){
alert("hello world");
}

在此代码中,onclick 函数起作用。

我需要提醒 <div> 内的代码,我该怎么做?这两个函数有什么区别?

3个回答

问题在于引用。 hello world 之前的 'append() 参数开头的 ' 匹配,因此它结束了该字符串。您需要转义字符串内的引号。

$("#header").append('<div id="con" style="height:20%; width:30%; background:orange;" onclick="alert(\'hello world\')"></div>');
Barmar
2015-03-03

您可以使用 jQuery 动态绑定 onclick 事件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"        
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<head>
  <title>test of click binding</title>

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript">


jQuery(function(){
  close_link = $('<a class="" href="#">Click here to see an alert</a>');
  close_link.bind("click", function(){
    alert('hello from binded function call');
    //do stuff here...
  });

  $('.add_to_this').append(close_link);
});
  </script>
</head>
<body>
  <h1 >Test of click binding</h1>
  <p>problem: to bind a click event to an element I append via JQuery.</p>

  <div class="add_to_this">
    <p>The link is created, then added here below:</p>
  </div>

  <div class="add_to_this">
    <p>Another is added here below:</p>
  </div>


</body>
</html>
2015-03-03

尝试像这样替换 $("#header") 行:

$("#header").append('<div id="con" style="height:20%; width:30%; background:orange;" onclick="alert("hello world")"></div>');

我只是在 hello world 周围插入了 (") 而不是 (')。

idants
2015-03-03