我有以下代码生成一个表:
<table class="table table-bordered table-striped" id="assignedvs">
<thead>
<tr>
<th>VlId</th>
<th>Name</th>
<th>Status</th>
<th>Voice</th>
<th>Jumbo</th>
<th>Mode</th>
</tr>
</thead>
<tbody>
<?php foreach ($vln as $vlndetail): ?>
<tr>
<td id='vlid'><?php echo $vlndetail['VlId'] ?></td>
<td><?php echo $vlndetail['Name'] ?></td>
<td><?php echo $vlndetail['Status'] ?></td>
<td><?php echo $vlndetail['Voice'] ?></td>
<td><?php echo $vlndetail['Jumbo'] ?></td>
<td><?php echo $vlandetail['Mode'] ?></td>
</tr>
<?php endforeach ?>
我需要找到VlId匹配用户在文本框中指定的行。一旦我找到了这条记录,我想在特定行的模式列中获取值。
这是我到目前为止所写的内容:
$('#delete').live('click', function() {
//get a count of all records. only allowed to delete if you have more than one + the header.
var reccount = $('#assignedvs tr').length;
if (reccount > 2)
{
//loop through the table
$('#assignedvs tr').each(function() {
var temp = $(this).find(".vlid").html();
console.log(temp);
if (temp == $('#uservalue').val){
//grab mode column
}
});
}
else
{
alert("error: must have at least 1 record.");
}
});
问题 - 我必须引用vlid列的代码不正确。它总是在控制台上打印一个null。 你能告诉我我做错了什么吗? 感谢。
编辑1
我将我的id改为了一个类,并将我的jquery改回原来的代码。它的工作 - 除了我认为它包括标题的事实。我有4行+标题。当我检查控制台结果时,第一次打印输出始终为NULL,然后是4条记录的正确值。如何让它忽略标题?
答案 0 :(得分:2)
那是因为你find
className
而不是id
。要按id
查找,请改用以下内容:
$(this).find("#vlid").html();
但是,因为id
在整个文档中应该是唯一的,更好的解决方案是维护当前代码,而不是使用<td id='vlid'>
,使用{ {1}}。
另请注意<td class='vlid'>
是一个函数。因此,要获取给定输入的值,您应该使用val()
。
编辑:要排除标题,请使用$('#uservalue').val()
选择器。这样,您只能获得$('#assignedvs tbody tr')
后代的行,从而忽略从tbody
下降的标题行。
答案 1 :(得分:0)
一些变化:
<?php echo $vlndetail['VlId']; //missing semi-colon ?>
var temp = $(this).find("#vlid").html();
vlid是一个id 答案 2 :(得分:0)
答案 3 :(得分:0)
var temp = $(this).find("#vlid").html(); // .vlid (by class) changed to #vlid (by id)
答案 4 :(得分:0)
更简单的解决方案。
使用 vlId 为每一行分配一个ID(可能在ID前加tr_
以避免重复)。
将具有列名的类分配给每个datacell。
像这样:
<?php foreach ($vln as $vlndetail): ?>
<tr id='tr_<?php echo $vlndetail['VlId'] // set the ID ?>'>
<td class='vlid'><?php echo $vlndetail['VlId'] ?></td>
<td class='Name'><?php echo $vlndetail['Name'] ?></td>
<td class='Status'><?php echo $vlndetail['Status'] ?></td>
<td class='Voice'><?php echo $vlndetail['Voice'] ?></td>
<td class='Jumbo'><?php echo $vlndetail['Jumbo'] ?></td>
<td class='Mode'><?php echo $vlandetail['Mode'] ?></td>
</tr>
<?php endforeach ?>
然后要获取所选vlID的名称,只需执行此JQUERY:
var rowID = "#tr_" + $('#uservalue').val(); // this is optional. I prefer to cache values for increased code readability.
$(rowID + " td.Mode").dostuffhere(); // this selector returns the Mode cell for the row indicated by the user
这将获取该特定行的Mode列。