У меня есть экземпляр, где мне нужно значение this
, которое будет перенесено на другую функцию для использования. Очевидным решением было бы использовать глобальные переменные, но я слышал, что это не очень хорошая практика. Вот мой код:Есть ли способ передать «это» другой функции?
$('.title').each(function(){
$(this).click(function(){
titleThis = this;
});
});
$('.post-footer').click(function(){
$(titleThis).css('background','red');
});
Как я могу сделать это без использования глобальных переменных?
Side Примечание: Я не могу сделать что-то вроде этого:
$('.title').each(function(){
$(this).click(function(){
var titleThis = this;
$('.post-footer').click(function(){
$(titleThis).css('background','red');
});
});
});
, потому что плагин я использую вместо .click()
в этом примере (JQuery Waypoints) Выдает ошибку, когда я пытаюсь сложить его (не знаю, почему). Он отлично работает, когда я использую глобальную переменную в моем первом примере, я просто хотел бы избежать использования глобальных переменных, если это вообще возможно.
EDIT: Поскольку, как представляется, некоторые проблемы с моим примером кодом, что некоторые решения не будут работать в моем реальном коде, вот мой фактический код блок:
$('.title').each(function() {
//creating the waypoint
$(this).waypoint(function(direction) {
//declaring global variable as this
titleThis = this;
//if below waypoint, do animation
if (direction === "down"){
//fix the title
$(this.element).addClass('titleFixed');
//slide right
$(this.element).animate({left:'10%'},250,function(){
//slide title decoration right
$(this).next().animate({left:'0'},50);
});
//if above waypoint, undo animation
}else{
//unfix the title
$(this.element).removeClass('titleFixed');
//animate left
$(this.element).animate({left:'-3.5%'},240,function(){
//animate title direction left
$(this).next().animate({left:'-3.5%'},150);
});
}
});
});
$('.post-footer').waypoint(function() {
$(titleThis.element).css('background','red');
});
Если я пытаюсь гнездо второго .waypoint внутри первой, я получаю сообщение об ошибке.
Что вы на самом деле пытаетесь выполнить (с точки зрения функциональности, а не «этой» контекстной перспективы)? Это позволит нам лучше понять ситуацию. – RutledgePaulV
С помощью путевых точек JQuery, я пытаюсь сделать текущий активный символ '.title' красным, когда достигается точка пути .post-footer'. Поскольку у всех названий есть только один класс, мне нужно использовать 'this' для выбора текущего. –
Возможно, вы захотите добавить обработчик кликов, только когда щелкнут блок .title, и удалите его после щелчка .post-footer. Это позволит вам избежать глобальных переменных. – RutledgePaulV