Я пытаюсь вызвать переменную несколько раз, но она работает только один раз. Я предполагаю, что вы сможете использовать эту переменную только один раз. Есть ли способ обойти это?
Вот пример того, что я пытаюсь достичь...
var prependThis = $('<li><a href="#">PREPEND ME</a></li>');
var andThis = $('<li><a href="#">PREPEND ME TOO</a></li>');
$(function () {
if ($('body').hasClass('test')) {
$(prependThis).prependTo($('.testing'));
$(andThis).prependTo($('.test'));
} else if ($('body').hasClass('anothertest')) {
$(prependThis).prependTo($('.testing'));
$(andThis).prependTo($('.test'));
}
});
Вы не получаете действительный объект jQuery с селекторами:
var prependThis = $('<li><a href="#">PREPEND ME</a></li>');
var andThis = $('<li><a href="#">PREPEND ME TOO</a></li>');
См. Здесь.
Если вы хотите добавить строку, вы должны просто назначить их в кавычках переменной:
var prependThis = '<li><a href="#">PREPEND ME</a></li>';
var andThis = '<li><a href="#">PREPEND ME TOO</a></li>';
Это будет видно HTML-код, когда он помещается в DOM.
так что вы можете сделать:
$(function() {
if ($('body').hasClass('test')){
$(prependThis).prependTo('.testing');
$(andThis).prependTo('.test');
}
else if ($('body').hasClass('anothertest')){
$(prependThis).prependTo('.testing');
$(andThis).prependTo('.test');
}
});
Заметьте, что вы пропустили котировку здесь $(prependThis).prependTo('.testing');
Объекты DOM могут быть добавлены только один раз. Вам нужно клонировать элемент jQuery, чтобы иметь возможность добавлять его более одного раза.
var prependThis = $('<li><a href="#">PREPEND ME</a></li>');
var andThis = $('<li><a href="#">PREPEND ME TOO</a></li>');
$(function () {
if ($('body').hasClass('test')) {
prependThis.clone().prependTo($('.testing'));
andThis.clone().prependTo($('.test'));
} else if ($('body').hasClass('anothertest')) {
prependThis.clone().prependTo($('.testing'));
andThis.clone().prependTo($('.test'));
}
});
prependThis
уже является объектом jQuery, поэтому вам нужно только клонировать его и добавить к чему-либо. var $clone = prependThis.clone(); $('.test').prepend($clone);