2013-04-16 3 views
1

Я использую старую версию Firefox (я не могу ее обновить по разным причинам). И я не могу использовать обработчики событий jQuery (они, кажется, утечка памяти в старых браузерах).Пользовательская функция JQuery, называемая html?

Поэтому я вынужден использовать следующий код:

<div class="somediv" onclick="dostuff()"></div> 

Проблема, код won't работы. Зачем?

Мой Javascript код:

$(document).ready(function() 
{ 
    function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
}); 
+0

@ Николас Батлер - Привет, Николас, я ценю, что вы, ребята, исправьте меня. Но зачем удалять мое «Спасибо заранее»? Что-то не так с вежливым? :-) – Juw

+0

Мне нравится вежливо! Но добавление TIA и тому подобное в вопросах связано с этикетом сайта, поскольку оно просто добавляет беспорядок: http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts –

ответ

4

Вы поместили функцию внутри ready события обработчик, поэтому он локален для этой области. Установите функцию в корневом уровне, так что он доступен по всему миру:

function dostuff() { 
    $('#someotherdiv').html('hello'); 
} 

$(document).ready(function() { 
    // whatever you need to do when the page has loaded 
}); 
+0

Да, как вы можете видеть: http://jsfiddle.net/WHj2u/ –

+0

Да, но тогда функция может быть запущена до того, как DOM готов. Это делает больше, чем сообщение «привет». – Juw

+2

@Juw: Когда вы объявляете функцию глобально, она существует с самого начала (ниже тега скрипта, где она объявлена). Если функция что-то делает с элементами, которые еще не существуют (т. Е. Элементы, загруженные позже элемента, вызывающего функцию), вы должны обрабатывать это внутри функции. – Guffa

0

просто поставить функцию вне $(document).ready(, так же, как показано ниже нет необходимости ставить функцию в $(document).ready(

function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
0
$(document).ready(function() { 

}); 

ваша функция здесь идет

function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
0

Другой способ: система событий Используйте jQuerys назначить обработчик щелчка

$(document).ready(function() { 
    $('.somediv').click(function() { 
     $('#someotherdiv').html('hello'); 
    } 
}); 
+0

Как я сказал в своем оригинальном посте. Я не могу использовать события JQuery, потому что кажется, что утечка памяти на старых браузерах – Juw

Смежные вопросы