У меня есть следующий код jQuery:
$('.save').submit(function(e){
var formElement = $(this);
var data = 'id=' + $(this).attr('name') + '&' + $(this).serialize();
var messageBox = $(this).next('.message');
messageBox.html('<div class="pending">Saving... please wait...</div>');
$.post('save.php', data, function(response) {
messageBox.html(response);
if(response.indexOf('success') != -1) {
alert(formElement.closest('li').html());
}
});
e.preventDefault();
});
И это тот HTML, с которым он работает:
<ul class="entries">
<li id="id8673" class="3">
<div class="expand">
<div class="name">...</div>
</div>
<div class="entry">
<div class="description">...</div>
<form action="index.php." method="post" name="rate8673" class="save">
<div class="comments">...</div>
<div class="controls">...</div>
</form>
<div class="message">
<div class="success"></div> // Added by jQuery after form submission
</div>
</div>
</li>
</ul>
Что предупреждает об этом, когда отправляется .save
:
<div class="expand">
<div class="name">...</div>
</div>
<div class="entry">
<div class="description">...</div>
</div>
Если я обновлю свой код jQuery до:
...
alert(formElement.closest('li .entry').html());
...
Это предупреждает, как и ожидалось:
<div class="description">...</div>
Но если я обновлю свой код jQuery так:
...
alert(formElement.closest('li .expand').html());
...
Это предупреждает:
NULL
И это должно насторожить:
<div class="name">...</div>
И я не могу понять, почему NULL
? Я удалил весь javascript, кроме этой функции, и все элементы HTML сразу становятся доступны после загрузки страницы, так что мне здесь не хватает? Есть ли способ, что такое NULL
и откуда он это взял?