Как использовать метод load (fn) в jQuery, чтобы он действительно работал - PullRequest
1 голос
/ 30 июля 2009

В документации JQuery есть что сказать о .load (fn) (http://docs.jquery.com/Events/load#fn):

Примечание: загрузка будет работать, только если вы установите это до того, как элемент полностью загружен, если вы установите его после этого ничего не случится.

Итак, когда предполагается связать событие загрузки для <div id="test">? Насколько я понимаю, сделать это до того, как этот div действительно появится, не будет работать, потому что $ ('# test') не выберет его, а делать это после этого, как упоминалось выше, слишком поздно. Следующий код, кажется, поддерживает это:

<html>
<head></head>
<body>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<script type="text/javascript">

   $('#test').load(function(event) { event.target.css('color', 'blue'); alert('a');});

</script>

<div id="test">TEST</div>

<script type="text/javascript"> 
   $('#test').load(function(event) { event.target.css('color', 'red'); alert('b');});
</script>


</body>
</html>

После загрузки ничего не происходит (никаких изменений цвета, никаких предупреждений), и Firebug говорит, что все в порядке.

Ответы [ 4 ]

4 голосов
/ 30 июля 2009

Событие load предназначалось для асинхронно загружаемых элементов, таких как изображения и загруженный ajax контент.

Это бесполезно для статического контента.

В вашем примере первый обработчик события load () привязан до определения элемента #test, поэтому он не будет работать. Второй обработчик события load () слишком поздний, потому что #test уже загружен.

0 голосов
/ 30 июля 2009

Если я правильно понимаю ваши намерения, код, который вы намереваетесь написать:

$(function() {
  $('#test').css('color', 'blue');
  alert('a');
});

Если вы также хотите, чтобы элемент #test выполнял определенную функцию, когда его содержимое загружается с помощью вызова AJAX, попробуйте следующее:

$(function() {
  $('#test').css('color', 'blue').load(function() {
    $('#test').css('color', 'red');
    alert('b');
  });
  alert('a');
});
0 голосов
/ 30 июля 2009

Событие load запускается только из окон и изображений, из того, что я вижу.

$(function(){
  $("#test").css("color","blue");
});
0 голосов
/ 30 июля 2009

возможно, он срабатывает до того, как DOM будет готов, поэтому #test div еще не существует, попробуйте заключить его в $ (document) .ready (...

должно выглядеть примерно так:

$(document).ready(function(){
    $('#test').load(function(event) { event.target.css('color', 'blue'); alert('a');});
};)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...