动态事件函数绑定在vbscript / javascript中不会发生

Dynamic event-function binding isn't happening in vbscript / javascript

本文关键字:javascript 函数 事件 绑定 vbscript 动态      更新时间:2023-09-26

按钮1工作得很好,但当我尝试动态插入按钮2的onclick事件不调用其映射函数,任何线索它是如何工作的?这是一个简单的例子,但稍后我需要从复杂对象捕获事件,如trackbar的滚动事件。

<html>
<head>
<title>a simple first page</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("#form").append("<input id='button2' type='button' value='button 2'>");
    });
</script>
<script language="vbscript">
Sub Button1_OnClick()
        MsgBox "button 1"
End Sub
Sub Button2_OnClick()
        MsgBox "button 2"
End Sub
</script>
</head>
<body>
<form id="form"><input id="button1" type="button"
    value="button 1"></form>
</body>
</html>

如果你是添加一个新的按钮到DOM动态使用jquery的live()函数:

$('[type=button]').live('click', function() { alert('Clicked button'+$(this).val(); } );

这将添加事件到所有当前的DOM元素和'尚未'创建的那些!

我不确定VB脚本,但这,你可以附加一个处理程序到任何你的按钮使用jQuery实时功能或通过分配函数onclick事件,同时创建您的输入和附加到表单。

参见示例

<script type="text/javascript">
    $(document).ready(function() {
        $("#form").append("<input id='button2' type='button' value='button 2'>");
    });
function button_2(){
alert('message 2')
}
// using jQuery live
$('#button2').live('click',button_2);
// other way attaching onclick value to input while creating it
 $(document).ready(function() {
        $("#form").append("<input onclick='button_2()' id='button2' type='button' value='button 2'>");
    });
</script>

如何 Button1_Click被调用?IE中是否存在某种我不知道的隐式绑定?我要做的是用attachEvent()添加一个事件。

IE不允许onClick事件在动态创建的DOM 'a'div元素