2010-07-25 3 views
1

HTML-:Jquery переменная проблема

<div class="first" id="first_id"> 
<div class="second">text sample</div> 
<div class="third"><button type="submit" class="some_class" id="some_id">send</button></div> 
</div> 

Jquery:

$("#some_id").click(function() { 
var test = $(this).closest('.first').attr('id'); 
.. 
return false; 
}); 

Я хочу, чтобы заменить содержимое "первого", "тест" ДИВ с помощью вар в JQuery кода выше. Что-то вроде:

$("."+test).html('<img src="img/spin.gif">'); 

Но когда я ставлю эту часть кода в функции выше она не работает. Что я сделал не так?

ответ

6

Вы получаете идентификатор, но выбрав его в качестве .class selector (так должно быть $("#"+test)), но это может быть проще, как это:

$("#some_id").click(function() { 
    $(this).closest('.first').html('<img src="img/spin.gif">'); 
    return false; 
}); 

Там нет необходимости идти выбора элемента снова, у вас уже есть, так что просто вызов .html() на элемент, который вы нашли с .closest() работ, проще и быстрее :)


Для полноты ради, хотя, что вы должны сделать это:

$("#some_id").click(function() { 
    $(this).closest('.first').empty().append('<img src="img/spin.gif">'); 
    return false; 
}); 

Использование .empty() вызов будет Ыборка click обработчик мы в противном случае it'l быть оставлено вокруг в $.cache ... это не является большой проблемой, но если у вас есть штук элементов, которые он добавляет, лучше всего всегда очищать, если это возможно.

1

Вы вводите значение id в тест, но затем вы используете '.' в селекторе. Вместо этого вы должны использовать '#'.

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