用jquery获取html数组元素

时间:2012-03-15 08:42:14

标签: jquery jquery-selectors

我有一个HTML数组;

<input class="input_box" name="authors[]" id="author1"/>

我想要做的是,在不刷新页面的情况下获取此数组的值,(我确实在输入字段的旁边显示值,在独立的div中)

$(document).ready(function(){    
$("input[id^="author"]").change(update);
});
    function update(){ 
    var authors=new Array();
    $("input[id^="author"]").each(function(){authors.push($(this).text()) }); 
    var author= '"' + authors.join('", "') + '"';

    $('#val-authors').html('authors:<span class="red"> "'+author+'"</span>');}

我在<div id="val-authors">中看到的只有"",

我错过了什么?

提前感谢..

3 个答案:

答案 0 :(得分:7)

你的选择器:

$("input[id^="author"]")

不正确,因为您尝试在双引号内使用双引号。其中一对需要是单引号。

如果您使用的是JS调试器,则应立即显示。

FWIW,这是一种检索所需数组的更简洁方法:

var authors = $('input[id^="author"]').map(function() {
  return this.value;
}).get();

答案 1 :(得分:3)

你的“html数组”根本不是一个数组,即使假设有许多其他类似的输入(尽管提交表单时,你选择的服务器端语言可能允许你访问具有相同名称的输入值作为一个数组)。总之...

主要问题是你的JS有语法错误:

$("input[id^="author"]")

如果要在双引号字符串文字中包含双引号,则必须对它们进行转义:

$("input[id^=\"author\"]")

或者用单曲引用字符串:

$('input[id^="author"]')

避免属性开始 - 使用id属性的选择器并通过name属性选择可能更有效,注意对于jQuery,atttribute名称中的方括号需要使用反斜杠转义,并且对于JS字符串文字反斜杠也需要转义:

$('input[name="authors\\[\\]"]')

使用.val()而不是.text()来获取jQuery的输入值,但使用this.value更有效:

var authors = [];
$('input[id^="author"]').each(function(){ authors.push(this.value); }); 

我还建议使用= []而不是= new Array()声明数组。

答案 2 :(得分:1)

变化:

$("input[id^="author"]").change(update);

要:

$("input[id^='author']").change(update);