Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从隐藏哈希在jquery中创建关联数组_Javascript_Jquery_Arrays_Hash - Fatal编程技术网

Javascript 从隐藏哈希在jquery中创建关联数组

Javascript 从隐藏哈希在jquery中创建关联数组,javascript,jquery,arrays,hash,Javascript,Jquery,Arrays,Hash,我正在尝试从隐藏的哈希创建关联数组。下面的jquery调用特定的散列,但我想用一个代码动态创建它 $(document).ready(function() { $("#tokens").tokenInput([ {id: 1, name: "Darren Criss"}, {id: 2, name: "Ann Arbor T-shirt Company"}, {id: 3, name: "StarKid Product Store"

我正在尝试从隐藏的哈希创建关联数组。下面的jquery调用特定的散列,但我想用一个代码动态创建它

$(document).ready(function() {
     $("#tokens").tokenInput([
         {id: 1, name: "Darren Criss"},
         {id: 2, name: "Ann Arbor T-shirt Company"},
         {id: 3, name: "StarKid Product Store"},
     ]);
 });
我试着这样做:

 $(document).ready(function() {
     var variable = $("input[type='hidden'][class='stores']").val();
      $("#tokens").tokenInput(variable);
 });
但它不起作用

这是散列

  <input id="1" class="stores" type="hidden" value="Darren Criss" taxonomies_count="9"  
 name="1" disabled="disabled"></input>

 <input id="2" class="stores" type="hidden" value="Ann Arbor T-shirt Company" 
 taxonomies_count="46" name="2" disabled="disabled"></input>

 <input id="3" class="stores" type="hidden" value="StarKid Productions Store" 
 taxonomies_count="22" name="3" disabled="disabled"></input>

您提供的源代码不是散列,而是HTML输入标记。如果要从中提取值,可以使用


我不确定一旦你有了散列,你想用它们做什么,但这应该让你开始了。

你作为源代码给出的不是散列,而是HTML输入标记。如果要从中提取值,可以使用


我不确定一旦你有了散列,你想用它们做什么,但这应该可以让你开始了。

你当前的代码调用
tokenInput
,但只传递一个字符串(DOM中遇到的第一个
输入
元素的值。假设加载
文档
时DOM中存在这些散列

  var val = $("input[type='hidden'][class='stores']").val();
  $("#tokens").tokenInput(val);
在功能上等同于

$("#tokens").tokenInput("Darren Criss");
它与
tokenInput
所期望的参数类型不匹配(请参阅)(您在第一个代码示例中的想法似乎是正确的)。为什么不迭代jQuery
input
选择,将新的哈希对象推到列表中,最后调用tokenInput,将完整的列表传递给它:

$(document).ready(function() {
    var hashes = [];
    $('input.stores').each(function(i, elem) {
        hashes.push({
            'id': $(elem).attr('id'),
            'name': $(elem).val(),
        });
    });
    console.log(hashes);
    //$('#tokens').tokenInput(hashes);
});
编辑:

什么是i和elem

我的方法是使用jQuery的内置迭代器函数
each
()。此实用程序函数允许程序员轻松迭代现有集合,包括对象、数组和jQuery选择。以下是jQuery文档中看到的函数签名(缺少更好的术语):

each(集合、回调(indexInArray、valueOfElement))

您可以对任何iterable JavaScript对象(例如-
foo.each(…);
)调用
each
,尽管在调用之前通常会看到jQuery选择。
each
希望您向其传递一个回调函数,该函数接受两个参数:索引/键参数和值/项参数(作为旁注,您还可以访问回调主体内部的
this
,这是一个引用值/项的隐式参数)

each
将为集合中的每个项调用此函数一次,并根据迭代中的当前项自动为您传递适当的索引/键和值参数。jQuery选择是类似于iteray的对象:它们的行为类似于JavaScript数组,它们的“项”可以使用数值ind引用EXE(例如,调用
$('div')[0]
$('div')。get(0)
将返回与
div
选择器匹配的第一个DOM元素的引用(如果页面上存在div)

当我们迭代jQuery选择时,我们迭代的“项”是对DOM元素的引用。在我的示例中,当我调用jQuery选择上的
each
并为其提供回调函数时,
I
被赋予选择中当前DOM元素索引的值,而
elem
引用实际的元素。我们通常希望在回调函数中的这些元素上调用jQuery方法。这要求我们将元素包装为jQuery对象(
$(elem)
),允许我们使用jQuery的所有功能操作元素

通常,对jQuery选择调用
每个
,遵循以下形式:

$('your selector here').each(function(i,elem) {
    var foo = $(elem); //Allows us to treat the DOM element as a jQuery object
    //Do stuff ... foo.val().attr().css().toggle();
});
进一步阅读jQuery对象:

console.log(散列)是什么


我只是加入了一个
console.log()
,让您可以浏览生成的哈希列表。调用
tokenInput

您当前的代码调用
tokenInput
,而只传递一个字符串(DOM中遇到的第一个
输入
元素的值。假设加载
文档
时DOM中存在这些散列

  var val = $("input[type='hidden'][class='stores']").val();
  $("#tokens").tokenInput(val);
在功能上等同于

$("#tokens").tokenInput("Darren Criss");
它与
tokenInput
所期望的参数类型不匹配(请参阅)(您在第一个代码示例中的想法似乎是正确的)。为什么不迭代jQuery
input
选择,将新的哈希对象推到列表中,最后调用tokenInput,将完整的列表传递给它:

$(document).ready(function() {
    var hashes = [];
    $('input.stores').each(function(i, elem) {
        hashes.push({
            'id': $(elem).attr('id'),
            'name': $(elem).val(),
        });
    });
    console.log(hashes);
    //$('#tokens').tokenInput(hashes);
});
编辑:

什么是i和elem

我的方法是使用jQuery的内置迭代器函数
each
()。此实用程序函数允许程序员轻松迭代现有集合,包括对象、数组和jQuery选择。以下是jQuery文档中看到的函数签名(缺少更好的术语):

each(集合、回调(indexInArray、valueOfElement))

您可以对任何iterable JavaScript对象(例如-
foo.each(…);
)调用
each
,尽管在调用之前通常会看到jQuery选择。
each
希望您向其传递一个回调函数,该函数接受两个参数:索引/键参数和值/项参数(作为旁注,您还可以访问回调主体内部的
this
,这是一个引用值/项的隐式参数)

each
将为集合中的每个项调用此函数一次,并根据迭代中的当前项自动为您传递适当的索引/键和值参数。jQuery选择是类似于iteray的对象:它们的行为类似于JavaScript数组,它们的“项”可以使用数值ind引用EXE(例如,调用
$('div')[0]
$('div')。get(0)
将返回与
div
选择器匹配的第一个DOM元素的引用(如果页面上存在div)

当我们迭代一个jQue时