powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery задание onclick в IE6
10 сообщений из 10, страница 1 из 1
jQuery задание onclick в IE6
    #36491015
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Есть различные методы, которые нужно устанавливать на кнопку btnYes в зависимости от различных условий с помощью функции onQuestion. Например

onQuestion("GroupChanged();");

Проверяю работу в FF и IE6
Код: plaintext
1.
2.
3.
4.
    function onQuestion(method) {
         $("#btnYes").removeAttr("onclick");
        $("#btnYes").attr(method);
     }
Работает в FF, но только 1 раз. При назначении даже того же метода второй раз, не срабатывает. В IE6 не работает.

Код: plaintext
1.
2.
3.
4.
5.
    function onQuestion(method) {
        var newclick = eval("(function(){" + method + "});");
        $("#btnYes").removeAttr("onclick");
        $("#btnYes").attr('onclick', '').click(newclick);
     }

Работает в FF в том числе повторно. В IE6 не работает.
Можно ли заcтавить работать в IE6?

Спасибо!
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36491146
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем к jQuery DOM'овский обработчик onclick? Для назначения и снятия события в jQuery есть bind и unbind (ну и live и die) - вот их и используй. Для клика .bind("click", function(){...})
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36491157
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Starlex
Код: plaintext
1.
2.
3.
4.
5.
    function onQuestion(method) {
        var newclick = eval("(function(){" + method + "});");
        $("#btnYes").removeAttr("onclick");
        $("#btnYes").attr('onclick', '').click(newclick);
     }

IDVsbruckПри чем к jQuery DOM'овский обработчик onclick? Для назначения и снятия события в jQuery есть bind и unbind (ну и live и die) - вот их и используй. Для клика .bind("click", function(){...})
Он(а) и использует bind, только через шортхэнд click(observer).

Starlex,
во-первых, не следует, ИМХО, делать attr('onclick', '') - если хотите удостовериться, что на onclick не будет висеть ничего, тогда уж removeAttr('onclick'),
во-вторых, проверьте такой банальный пример:
Код: plaintext
1.
2.
jQuery('#btnYes').removeAttr('onclick').click(function() {
  alert('test');
});
если после этого при клике будет алерт, значит проблема у вас в части
Код: plaintext
var newclick = eval("(function(){" + method + "});");
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36491161
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymво-первых, не следует, ИМХО, делать attr('onclick', '') - если хотите удостовериться, что на onclick не будет висеть ничего, тогда уж removeAttr('onclick'),
Возможно вы пытаетесь сделать это
Код: plaintext
jQuery('#btnYes').unbind('click')
?
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36492755
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Спасибо. Сделал с bind. Также в FireFox работает, но проблема в том что не работает в IE6
Код: plaintext
1.
2.
3.
function onQuestion(method) {
        var newclick = eval("(function(){" + method + "});");
        $('#btnYes').bind('click', newclick);
     }

Ошибка выдается в jQuery.event. Там handler = undefined, и при попытке обратиться к handler.guid, выскакивает ошибка. В FF всё отрабатывает, если мысли как это вылечить в IE6?
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36492773
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Starlexan0nym,

Спасибо. Сделал с bind. Также в FireFox работает, но проблема в том что не работает в IE6
Код: plaintext
1.
2.
3.
4.
function onQuestion(method) {
        var newclick = eval("(function(){" + method + "});");
        alert(newclick); // что выведет? 
        $('#btnYes').bind('click', newclick);
     }

Ошибка выдается в jQuery.event. Там handler = undefined, и при попытке обратиться к handler.guid, выскакивает ошибка. В FF всё отрабатывает, если мысли как это вылечить в IE6?

А так?
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36492833
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

В FF вывел сообщение:
Код: plaintext
1.
2.
function () {
    GroupChanged();
}

В IE6

Код: plaintext
undefined
да, по крайней мере понятно в чем дело, похоже eval в IE не эвалирует :)
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36492843
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymесли после этого при клике будет алерт, значит проблема у вас в части
Код: plaintext
var newclick = eval("(function(){" + method + "});");

Значит я оказался прав. Проверяйте, что у вас с eval. Навскидку (под рукой IE6 нету и не будет), попробуйте следующие варианты:
1. если method - это всегда название функции, две скобки и отсутствие параметров - почему бы вам вместо названия это функции как строки не передавать её саму? вы ведь знаете, что в JS функции - это тоже объекты?
Вместо
Код: plaintext
1.
2.
var test = function() { alert('test'); }
var onQuestion = function(method) { eval(method); }
onQuestion('test()');
делайте
Код: plaintext
1.
2.
var test = function() { alert('test'); }
var onQuestion = function(method) { method(); }
onQuestion(test);

2. Иначе - меня смущает точка с запятой внутри eval и есть подозрения, что другой синтаксис eval'а IE6 примет лучше: попробуйте
Код: plaintext
var newclick = eval("(function(){" + method + "})");
Код: plaintext
eval("var newclick = function(){" + method + "});");

P. S. и проверьте в IE6
Код: plaintext
alert(method);
- вдруг проблема возникает раньше eval.
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36492846
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym
Код: plaintext
eval("var newclick = function(){" + method + "};");

Скобка лишняя была.
...
Рейтинг: 0 / 0
jQuery задание onclick в IE6
    #36495069
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym
1. если method - это всегда название функции, две скобки и отсутствие параметров - почему бы вам вместо названия это функции как строки не передавать её саму? вы ведь знаете, что в JS функции - это тоже объекты?


Да, спасибо, так я и сделал. Остальные танцы с бубном не дали результата.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery задание onclick в IE6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]