Поставить синтаксическую переменную на массив - PullRequest
0 голосов
/ 24 июня 2010

У меня есть множество кнопок, которые при нажатии открывают или закрывают содержимое моего сайта.Мне нужно иметь возможность отследить, какая из них открыта, чтобы при повторном нажатии этой кнопки я узнал, закрывать ли содержимое.

Вот мой массив:

var imageOptions = ['.corporateNeeds', '.marketResearch', '.corpStrategic', '.employeeTraining', '.administration', '.wellnessManagement'];

И содержимое, которое откроется, когда вы нажмете одну из кнопок.

var options = ['.option1', '.option2', '.option3', '.option4', '.option5', '.option6'];

Затем я перебираю массив и показываю содержимое того, на котором был нажат:

jQuery.each(imageOptions, function (k) {
    $(imageOptions[k]).click(function () {
        hideOptions()
        $(options[k]).fadeIn();
        $(options[k].contentOpen) = true;
    });

});

Я хочу знать, есть ли способ отслеживания текущей нажатой кнопки с помощью точечного синтаксиса переменной, т.е. ( $ (options [k] .contentOpen) = true; ) для этой кнопки массива.Я знаю, что это можно сделать в AS, но мне нужно знать, как это сделать в jQuery.

Спасибо;)

Ответы [ 3 ]

2 голосов
/ 24 июня 2010

почему вы не используете .data() для хранения значений?

пример

$('button').click(function(){

    if ($('div#window').data('contentOpen') ) {
        // means open
        $('div#window').data('contentOpen',false); // set it to close
        // do something here
    } else {
        // means close
        $('div#window').data('contentOpen',true); // set it to open
        // do something here
    }


})
2 голосов
/ 24 июня 2010

Я не уверен, что вы пытаетесь выполнить, но я предполагаю, что вам нужно сохранять состояние для каждой кнопки (открывать / закрывать), чтобы вы знали, нужно ли открывать или закрывать соответствующее окно контента.

Для этого вы можете использовать функцию data () в jQuery:

jQuery.each(imageOptions, function (k) {
    $(imageOptions[k]).click(function() {
        if ($(this).data("open") == "true") {
             // hide content
             $(this).data("open","false");
        } else {
             // show content
             $(this).data("open","true");
        }

    });
});
0 голосов
/ 24 июня 2010

Вы можете создать массив анонимных объектов для этого, например:

var imageOptions = ['.corporateNeeds', '.marketResearch', '.corpStrategic', '.employeeTraining', '.administration', '.wellnessManagement']; 
var options = [{ selector: ".option1", contentOpen: false }, { selector: ".option2", contentOpen: false }, { selector: ".option3", contentOpen: false }]; 



jQuery.each(imageOptions, function (k) { 
    $(imageOptions[k]).click(function () { 
        hideOptions() 
        $(options[k].selector).fadeIn(); 
        options[k].contentOpen = true; 
    }); 

}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...