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

发布于 2024-11-04 09:55:31 字数 804 浏览 1 评论 0原文

按钮 1 工作正常,但是当我尝试动态插入按钮 2 时,onclick 事件不会调用其映射函数,有任何线索它是如何工作的吗?这是一个简单的示例,但稍后我需要从复杂对象(例如轨迹栏的滚动事件)捕获事件。

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

Button 1 works fine, but when I try to insert button 2 dynamically the onclick event doesn't call its mapped function, any clue how it works? This is a simple example but later I need to capture events from complex object like trackbar's scroll event.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清眉祭 2024-11-11 09:55:32

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

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

这会将事件添加到所有当前 DOM 元素和“尚未”创建的元素!

If you are adding a new button to the DOM dynamically use the live() function of jquery:

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

That'll add events to all current DOM elements and 'yet' to be created ones!

愁杀 2024-11-11 09:55:32

我不确定 VB 脚本,但是,您可以使用 jQuery live 函数将处理程序附加到任何按钮,或者在创建输入并附加到表单时在 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>

I am not sure about VB script but this, you can attach a handler to any your button using jQuery live function or by assigning function on onclick event while creating your input and appending to form.

see example

<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>
你的往事 2024-11-11 09:55:32

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

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

How does Button1_Click get called at all? Is there some sort of implicit binding in IE, that I don't know about? The way I'd do it is to add an event with attachEvent().

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文