2012-03-01 130 views
0

我正在学习jquery并且正在使用jsfiddle。首先,我已经观看了关于pluralsight和AppendTo的基本视频。从特定列获取值列表

如果你看看这个http://jsfiddle.net/bmNKU/7/,我试图从一个特定的列(在本例中是一个电子邮件ID列表)中获取值的列表。

我已经设法得到循环,但它显示所有行和列的值...我想要的最终输出是来自EmailID列的所有行中的所有电子邮件ID的列表。即abc @ gmail.com,xyz @ gmail.com等......可以有任意数量的行。

回答

1

下面是一个创建使用的标记一个新的无序列表的一个版本。应该使用TD,而不是个

http://jsfiddle.net/bmNKU/14/

$(document).ready(function() { 
    /* add a new ul to put emails into*/ 
    $('body').append('<ul id="list"></ul>');  

    $("#btn").click(function() { 
          /* start an html string*/ 
     var html = ''; 
     /* loop over table*/ 
     $('tr:gt(0)').each(function() { 
      var email = $(this).find('th').eq(1).text(); 
      /* concatenate each new element to html string */ 
      html += '<li>' + email + '</li>'; 
     }) 

     /* add new html to DOM*/ 
     $('#list').html(html); 

    }); 
}); 
+0

非常感谢。这是很好的学习经验。我还有一个问题。对于一些选择器,我们把空格(例如$(#mytable tr))和一些我们把:例如($('tr:gt(0)'))我怎么知道什么时候使用SPACE和:? – NoobDeveloper 2012-03-02 02:07:15

+0

抱歉,不了解空间问题 – charlietfl 2012-03-03 04:29:27

1

首先,您应该只在标题行(具有'ID','电子邮件'的行)上使用th,并在包含数据的行上使用td。然后你可以选择'#mytable td',这将跳过标题列。其次,如果你使用一个类来标记你的列,它会容易得多。这里有一个例子:

HTML:

<table id='mytable' border='1'> 
    <tr> 
     <th>ID</th> 
     <th>Email</th> 
    </tr> 
    <tr> 
     <td class='ID'>1</td> 
     <td class='Email'>[email protected]</td> 
    </tr> 
    <tr> 
     <td class='ID'>2</td> 
     <td class='Email'>[email protected]</td> 
    </tr> 
</table> 

然后使用Javascript:

$(document).ready(function() { 
    $('#btn').click(function() { 
     $('#mytable td.Email').each(function() { 
      alert($(this).html()); 
     }); 
    }); 
}); 
+0

感谢。你和@charlietfl的例子都给了我很多帮助。 – NoobDeveloper 2012-03-02 02:07:43

0

首先,让我们清理标记位。其次,考虑这个版本的小提琴找到所有的ID和电子邮件,并将它们添加到一个数组中,您可以通过单击该按钮来完成您需要的操作(在本例中输出为div):http://jsfiddle.net/bmNKU/10/

0

首先,你的html表格应该被调整。 “th”用于表示表格列标题,而不是值。应该在这里使用“td”。

接下来,通过为每个“td”指定一个类,可以很容易地通过jquery引用它们。

Here's a working example.