Как заменить "a" в $a переменной
Я пытаюсь заменить букву "а" в функции с переменной. Например, измените это:
setInterval(function(){
var $a = $( '.a' );
});
к этому:
var thisClass = 'a';
setInterval(function(){
var $(thisClass) = $( '.'+thisClass );
});
Проблема в том, что = $( '.'+thisClass );
работает просто отлично, но var $(thisClass)
не делает. Я пробовал несколько вариантов, в том числе: var $thisClass
а также var $('thisClass')
но никто не работает.
Можно ли вставить / ввести переменную вместо "а" в $a
?
ОБНОВИТЬ:
Ниже приведено текущее состояние моего фактического кода. Я понял, что я мог бы просто заменить $a
с $( '.a' )
которая решает некоторые мои проблемы с попыткой использовать var
заменить все имена классов, используемые в моей функции сразу. Но я все еще остаюсь с getElementById("a")
в конце, который не будет работать, если я использую, например, getElementById("classVar")
или же getElementById(classVar)
вместо.
setTimeout(function(){
var classVar = 'a';
$('.'+classVar).makisu( 'toggle' );
$('.'+classVar).makisu({
selector: 'dd',
overlap: Math.random() * (.7 - .2) + .2,
speed: Math.random() * (3 - .2) + .2
});
}, document.getElementById("a").childElementCount*universalBoxTime );
2 ответа
Ваша проблема с областью. В коде, который вы опубликовали, classVar
существует только внутри setTimeout
обратный вызов и не может быть использован снаружи. В JavaScript вы можете создавать функции, которые создают и вызывают другие функции, поэтому вы можете сделать свой код более универсальным следующим образом:
function do_the_thing($elements) {
var delay = $elements.children().length * universalBoxTime;
setTimeout(function() {
$elements.makisu('toggle');
$elements.makisu({
selector: 'dd',
overlap: Math.random() * (.7 - .2) + .2,
speed: Math.random() * (3 - .2) + .2
});
}, delay);
}
do_the_thing($('.a'));
do_the_thing($('.b'));
я использовал $elements
вместо elements
просто чтобы было очевидно, что $elements
является объектом jQuery Знак доллара не имеет значения, когда используется как часть имени переменной.
Вы можете получить к нему доступ по имени свойства, если вы знаете родительский объект.
В вашем случае, похоже, что ваша переменная находится в глобальной области видимости, поэтому вы можете попытаться получить к ней доступ из window
объект:
var thisClass = 'a';
setInterval(function(){
window['$' + thisClass] = $( '.'+thisClass );
});
Если вам нужна только эта переменная внутри вашего setInterval
функция, которую вы можете использовать this
вместо window
:
var thisClass = 'a';
setInterval(function(){
this['$' + thisClass] = $( '.'+thisClass );
});