将语法变量放入数组中

时间:2010-06-24 09:31:25

标签: jquery syntax variables

我有一系列按钮,点击后,打开或关闭我网站上的内容。我需要能够跟踪哪一个是打开的,这样当我再次点击该按钮时,我将知道是否关闭内容。

这是我的数组:

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 个答案:

答案 0 :(得分:2)

我不确定你要完成什么,但我假设您需要为每个按钮(打开/关闭)保持状态,以便您知道是否需要打开或关闭相关内容框。

为此,您可以在jQuery中使用data()函数:

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");
        }

    });
});

答案 1 :(得分:2)

为什么不使用.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 :(得分:0)

你可以创建一个匿名对象数组来完成这个任务,例如

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; 
    }); 

});