Динамическое связывание событий-функций не происходит в vbscript / javascript - PullRequest
0 голосов
/ 30 апреля 2011

Кнопка 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>

Ответы [ 3 ]

0 голосов
/ 30 апреля 2011

Я не уверен в сценарии 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>
0 голосов
/ 30 апреля 2011

Как вообще вызывается Button1_Click? Есть ли какая-то неявная привязка в IE, о которой я не знаю? Я бы добавил это, добавив событие с attachEvent().

IE не разрешает событие onClick для динамически создаваемого элемента DOM 'a'

0 голосов
/ 30 апреля 2011

Если вы добавляете новую кнопку в DOM, динамически используйте функцию jquery live():

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

Это добавит события ко всем текущим элементам DOM и «еще» будет создано!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...