动态事件 - 函数绑定在vbscript / javascript中没有发生

时间:2011-04-30 16:46:51

标签: javascript jquery vbscript

按钮1工作正常,但是当我尝试动态插入按钮2时,onclick事件不会调用其映射函数,任何线索如何工作?这是一个简单的例子,但后来我需要从复杂的对象中捕获事件,比如trackbar的scroll事件。

<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>

3 个答案:

答案 0 :(得分:0)

如果要向DOM添加新按钮,请使用jquery的live()函数:

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

这将为所有当前DOM元素添加事件,并且'尚未'创建它们!

答案 1 :(得分:0)

我不确定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>

答案 2 :(得分:0)

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

IE not allowing onClick event on dynamically created DOM 'a' element