可以使用' div id'作为数组的名称?

时间:2014-06-02 21:20:43

标签: jquery css arrays wordpress frameworks

请查看此jsfiddle jsfiddle.net/rflfn/uS4jd/

这是其他尝试jsfiddle.net/rflfn/T3ZT6/

我正在使用SMOF来开发Wordpress主题,我需要在单击链接时创建一个函数来更改某些值,但是当我创建名为div的数组时,数组返回null值... < / p>

HTML:

<a class="button" id="settext1">Some Link</a>
<br />

<a class="button" id="settext2">Another Link</a>
<br />

<a class="button" id="settext3">Link 3</a>
<br />

jQuery的:

$(document).ready(function(){
    // var col_settext1 = new Array(); // <-- I need make this array with name of DIV cliked
    col_settext1['field_id1']='#FF0000';
    col_settext1['field_id2']='#00FFFF';

    // var txt_settext1 = new Array(); // <-- I need make this array with name of DIV cliked
    txt_settext1['field_id3']='Some Text Here';
    txt_settext1['field_id4']='Another Text Here';

    // var txt_settext2 = new Array(); // <-- I need make this array with name of DIV cliked
    txt_settext2['field_id5']='Some Text Here';

    // var col_settext2 = new Array(); // <-- I need make this array with name of DIV cliked
    col_settext2['field_id6']='Another Text Here';

    // var chk_settext2 = new Array(); // <-- I need make this array with name of DIV cliked
    chk_settext2['field_id7']="checked";
});

$('.button').click(function(){
    $myclass = this.id;

    $col = 'col_' + $myclass;
    $txt = 'txt_' + $myclass;
    $chk = 'chk_' + $myclass;

    // Based I clicked on the link 'settext1', Here I have this:
    // col_settext1
    // txt_settext1
    // chk_settext1

    // THE PROBLEM ARE HERE!
    $col = new Array(); // <--- Here I use name of DIV as Array, but the value is lost...
    $txt = new Array();
    $chk = new Array();

    // Test...
    alert($col); // <--- Here no have any value :(
    alert($col[1]); // <--- Here no have any value :(

    for (id in $col) { // 'id' is value of array --> col_settext1['field_id1']='#FF0000';
        // do function based on array values...
        // just example:
        alert(id);
    }
    for (id in $txt) { // 'id' is value of array --> txt_settext1['field_id1']='#FF0000';
        // do function based on array values...
    }
    for (id in $chk) { // 'id' is value of array --> chk_settext1['field_id1']='#FF0000';
        // do function based on array values...
    }

});

是否可以使用div的名称作为数组名称? 任何建议或任何其他方法来解决这个问题都是值得欢迎的。

4 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题(即你想根据某些参数创建动态变量名),你应该使用下面的代码而不是“$ col = new Array();”

window[$col] = new Array();
window[$txt] = new Array();

等。

答案 1 :(得分:0)

您的问题是,如果我正在解释您正确询问的内容,那么您实际上并未将变量名称设置为新数组。

现阶段:

$myclass = this.id;

$col = 'col_' + $myclass;
$txt = 'txt_' + $myclass;
$chk = 'chk_' + $myclass;

你有     $ col =&#34; col_id&#34;,     $ txt =&#34; txt_id&#34;,     $ chk =&#34; chk_id&#34;。

基本上,这三个变量中的每一个都绑定到一个字符串。

现在你做:

$col = new Array();
$txt = new Array();
$chk = new Array();

所以现在这三个变量中的每一个都绑定到一个全新的数组,其中没有条目。

你想要做的是:

$col = new Array();
$col[0] = "col_" + $myclass;

其他人也一样。这将创建一个带有单个条目的新数组,&#34; col_id&#34;,绑定到变量名称$ col。

这将为您提供名为$ col,$ txt和$ chk的数组,其中包含id名称。

相反,如果您想要实际创建动态变量名称(不确定您是否真的需要这个,但确定如此),则需要使用Window

答案 2 :(得分:0)

看起来很简单,我在jquery中的知识很少,我整整两天试图完成这项工作,什么也没做。谁知道这件事是五分钟。我创建了另一个代码,我需要的只是让警报返回所需的值,然后我可以将原始代码用于工作。

点击button1,我会看到提示&#34;文字1&#34;,但没有任何反应。

http://jsfiddle.net/rflfn/N4a2h/

<强> HTML

<a class="button" id="arr1">Button1</a>
<a class="button" id="arr2">Button2</a>
<a class="button" id="arr3">Button3</a>

<强> Jquery的

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

    var window[myvar] = this.id;
    window[myvar] = new Array(); // I need use ID as array name

    // Code for button1
    arr1['value1'] = 'text 1';
    arr1['value2'] = 'text 2';

    // Code for button2
    arr2['value3'] = 'text 3';
    arr2['value4'] = 'text 4';

    // Code for button3
    arr2['value5'] = 'text 5';
    arr2['value6'] = 'text 6';

    // Click on Button1, the alert below need show "text 1"
    alert(window[myvar['value1']]); // "text 1"

    // alert(myvar['value1']);
});
我找到了这个 http://www.sitepoi...post5174213但我无法使其发挥作用。

我尝试使用其他Dynamic jQuery variable names,但我也无法使用它。

答案 3 :(得分:0)

我在jQuery论坛上问,最后得到了解决方案 https://forum.jquery.com/topic/is-possible-use-div-id-as-name-of-array-that-already-have-value

http://jsfiddle.net/L4CDd/

<强> HTML

<a class="button" data-arr="arr1">Button1</a> |
<a class="button" data-arr="arr2">Button2</a> |
<a class="button" data-arr="arr3">Button3</a>

<强>的jQuery

var arr = {
    arr1: {value1:"test 1", value2:"test 2"},
    arr2:{value3:"test 3", value4:"test 4"},
    arr3:{value5:"test 5", value6:"test 6"}
}
$('.button').click(function () {
    var call_array = arr[$(this).data("arr")]
    $.each(call_array, function (index, value) {
        alert('Array Value: ' + index + '        Array Content: ' + value);
    });
});

感谢您的帮助。