我把这个结构放到我的HTML中。
<table border="1" cellpadding="1" cellspacing="2">
<thead>
<tr>
<th>Name</th><th>Age</th><th>Address</th><th>Option</th>
</tr>
</thead>
<tbody>
<tr>
<td>here is the name</td>
<td>here is the age</td>
<td>here is the address</td>
<td><button class="update">update</button></td>
</tr>
<tr>
<td>here is the name2</td>
<td>here is the age2</td>
<td>here is the address2</td>
<td><button class="update">update2</button></td>
</tr>
</tbody>
</table>
从上面的结构可以看出,显示将是这个。
table header = Name, Age, Address, Option.
table body = here is the name, here is the age, here is the address, button update
table body = here is the name2, here is the age2, here is the address2, button update2
现在我想要做的是当我点击更新按钮时,我必须能够获得地址td的内容在同一行的名称td,并且每个必须存储在指定的变量中,例如($ name,$ age,$ address)。假设我有多行,我必须只能检索地址td的内容到同一行的名称td。更准确地说,正如上面的结构,我必须得到&#39;这里是名称&#39;,&#39;这里是年龄&#39;,&#39;这里是地址&#39; ;并将每个放在指定的变量中,例如($ name,$ age,$ address)当我点击你的更新&#34;按钮而不是&#34; update2&#34;按钮。
到目前为止,我试过的是。
$('.update').click(function(){
$address = $(this).prev('td').content();
alert ($dateposted);
});
但似乎没有返回任何东西。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
此处this
是按钮,没有以前的兄弟,您要查找的td
是点按按钮的td
父亲的上一个兄弟,也是您必须使用.text() / .html()来获取内容
$address = $(this).parent().prev('td').text();//$(this).closest('td')
答案 1 :(得分:0)
这是另一种方法。获得所有之前的div之后,然后循环它们以将值设置为正确的变量。
$('.update').click(function () {
var contents = $(this).parent().prevAll('td');
var name;
var age;
var address;
for(i = 0; i<contents.length; i++){
var currentContent = $(contents[i]);
switch(i){
case 0:
name = currentContent.text();
break;
case 1:
age = currentContent.text();
break;
case 2:
address = currentContent.text();
break;
}
}
console.log(address, age, name);
});
有关工作示例,请参阅http://jsfiddle.net/zeskysee/72j1oaqb/4/
希望这有帮助:)