2016-06-22 2 views
0

Я создаю простое меню аккордеона с двумя способами навигации.Обмен переменными между более чем одной функцией

  1. При нажатии на шаге названии
  2. При нажатии на кнопки «Next/Prev» внутри шага.

JSFiddle

Мой JS код выглядит следующим образом:

$(document).ready(function(){ 
 

 
// Click on TITLE 
 
$(".step-title").click(function(){ 
 
    
 
    var this_title = $(this).parents(".step").children(".step-title"); 
 
    var this_content = $(this).parents(".step").children(".step-content"); 
 
    var that_title = $(".step-title"); 
 
    var that_content = $(".step-content"); 
 
    
 
    if (this_title.hasClass("active")) 
 
    { 
 
    this_title.removeClass("active"); 
 
    this_content.slideUp(200); 
 

 
    } else { 
 
    that_title.removeClass("active"); 
 
    this_title.addClass("active"); 
 
    that_content.slideUp(200); 
 
    this_content.slideDown(200); 
 
    } 
 
    }); 
 
    
 
// Click on BUTTON 
 
$(".save").click(function(){ 
 
    
 
    var this_title = $(this).parents(".step").children(".step-title"); 
 
    var this_content = $(this).parents(".step").children(".step-content"); 
 
    var that_title = $(".step-title"); 
 
    var that_content = $(".step-content"); 
 
    
 
    if (this_title.hasClass("active")) 
 
    { 
 
    that_title.addClass("active"); 
 
    this_title.removeClass("active"); 
 
    that_content.slideDown(200); 
 
    this_content.slideUp(200); 
 
    } 
 
}); 
 

 
});

Как вы можете видеть, я повторно использовать одни и те же переменные в обеих функций и, следовательно, корень моего вопрос.

** ВОПРОС ** Есть ли способ для обмена этими переменными в нескольких функциях?

Когда я вынимаю их из локальной области функции, они не работают.

Благодарим за помощь.

+0

2 слова: переменная область: http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript?rq=1 – Hazonko

+0

Я читал это. Опять же, я попытался вывести из локального масштаба безрезультатно –

ответ

2

Это несколько способов сделать это.

Глобальная переменная считается плохой (даже ошибки в строгом режиме), чтобы делать в Js, так что, возможно, вы должны сохранить ее как есть или создать функцию с аргументом (который вызовет только часть вашей функции) ,

Если вы действительно хотите установить «глобальную» переменную, вы должны ommit в var перед именем переменной:

foo = bar 

Однако, как я уже сказал, это считается ошибкой в ​​строгом режиме, и может привести к различным проблемам. «Чистый» способ сделать это, присваивает переменную объекту окна.

window.foo = bar 

Будет работать как глобальная переменная, с меньшим количеством минусов и большей читабельностью.

+0

Спасибо за объяснение. К сожалению, это не то, что я ищу. Я попытался изменить область действия переменных безрезультатно. Я считаю, что характер моей переменной вызывает у нее не работу. –

+0

Тогда, может быть, вы должны сделать третью функцию, выполняющую выбор с помощью «этого» в качестве аргумента? Он вернет массив с вашими 4 объектами. . Затем вы вызываете эту функцию с соответствующим индексом для каждой вещи. Может ли это быть решением? – Carele

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