Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
如何在表中查找单元格并使用jQuery设置找到的单元格的下一个单元格的值?_Jquery_Html Table - Fatal编程技术网

如何在表中查找单元格并使用jQuery设置找到的单元格的下一个单元格的值?

如何在表中查找单元格并使用jQuery设置找到的单元格的下一个单元格的值?,jquery,html-table,Jquery,Html Table,我很难在表中设置某些单元格的值 下面是指向JSFIDLE的链接,其中包含以下示例: 我有一个表,它是按以下方式创建的: var r = []; var j = -1; r[++j] = '<table cellspacing="0" id="TableWeeklyFrame"><thead><tr><th><div>Day</div></th><th><div>Profile</

我很难在表中设置某些单元格的值

下面是指向JSFIDLE的链接,其中包含以下示例:

我有一个表,它是按以下方式创建的:

var r = [];
var j = -1; 
r[++j] =  '<table cellspacing="0" id="TableWeeklyFrame"><thead><tr><th><div>Day</div></th><th><div>Profile</div></th></tr></thead><tbody>'; 
for (var i=0; i<data.length; i++) {     
    r[++j] = '<tr class="WeeklyFrameTR">';
    r[++j] = '<td class="WeeklyFrameDay">';
    r[++j] = data[i];
    r[++j] = '</td><td><select class="SelectionWeeklyFrameProfile"></select>';
    r[++j] = '</td>';
    r[++j] = '</tr>';
}
r[++j] = '</tbody></table>';
$('#TableWeeklyFrame').html(r.join(''));
值是包含多个值的选择

现在问题来了

我有一组值,e.q.day=Monday,value=Off。由于日期并不总是按顺序排列的,大多数都是,但这不是这里的重点,我需要首先找到包含日期的行,然后将选择值设置为我想要的任何值

我可以通过这样做找到有特定日期的行

$('#TableWeeklyFrame tr.WeeklyFrameTR').find('td.WeeklyFrameDay:contains("Monday")');
最后一个问题是:如何设置该行的下一个/第二个单元格的值

我尽量不在整张桌子上兜圈子。到目前为止,我已经尝试了几种方法,包括:

$('#TableWeeklyFrame tr.WeeklyFrameTR').find('td.WeeklyFrameDay:contains("Monday")').find('td select.SelectionWeeklyFrameProfile').val()
$('#TableWeeklyFrame tr.WeeklyFrameTR').find('td.WeeklyFrameDay:contains("Monday")').next('td').val()
$('#TableWeeklyFrame tr.WeeklyFrameTR').find('td.WeeklyFrameDay:contains("Monday")').find('select.SelectionWeeklyFrameProfile').val() 
$('#TableWeeklyFrame tr.WeeklyFrameTR').find('td.WeeklyFrameDay:contains("Monday")').next('select.SelectionWeeklyFrameProfile').val() 
它们都返回未定义。我在这里遗漏了一些东西,我有一种感觉,那是一些愚蠢而渺小的东西


另外,如果有更简单、更快的方法来实现类似的结果,请告诉我。

您需要了解jQuery的遍历函数是如何工作的

儿童穿越儿童 find递归遍历子对象 下一个和上一个遍历一个兄弟 不能同时遍历子对象和兄弟对象

在您的情况下,需要遍历兄弟节点:

mondayTD.next('td')
现在您达到了正确的td,可以遍历子项:

.find('select')
或者因为select是td的子级


您需要了解jQuery的遍历函数是如何工作的

儿童穿越儿童 find递归遍历子对象 下一个和上一个遍历一个兄弟 不能同时遍历子对象和兄弟对象

在您的情况下,需要遍历兄弟节点:

mondayTD.next('td')
现在您达到了正确的td,可以遍历子项:

.find('select')
或者因为select是td的子级


您有您的选择。

您必须获取选择值的选择器不正确:请尝试以下操作:

$('#TableWeeklyFrame tr.WeeklyFrameTR')
    .find('td.WeeklyFrameDay:contains("Monday")')
    .next('td').find('select.SelectionWeeklyFrameProfile').val()

您可能还想了解使用和以及它们如何帮助您,因为它们比使用:contains“text”选择器快得多。

您必须获取选择值的选择器不正确:请尝试以下操作:

$('#TableWeeklyFrame tr.WeeklyFrameTR')
    .find('td.WeeklyFrameDay:contains("Monday")')
    .next('td').find('select.SelectionWeeklyFrameProfile').val()

您可能还想了解使用和以及它们如何帮助您,因为它们比使用:contains“text”选择器快得多。

您可以通过查看父项以更简单的方式解决此问题:

$('td.WeeklyFrameDay:contains("Monday")').parent().find('select')
总的来说,我认为这种在dom中移动的解决方案将很难维护,并且会产生像我的或这里提供的任何解决方案这样的丑陋代码

为什么不给每个select指定一个唯一的id?这将使更改值变得更加容易

r[++j] = '</td><td><select id=profile-"'+data[i]+'"></select>';

您可以通过查看父项以更简单的方式解决此问题:

$('td.WeeklyFrameDay:contains("Monday")').parent().find('select')
总的来说,我认为这种在dom中移动的解决方案将很难维护,并且会产生像我的或这里提供的任何解决方案这样的丑陋代码

为什么不给每个select指定一个唯一的id?这将使更改值变得更加容易

r[++j] = '</td><td><select id=profile-"'+data[i]+'"></select>';

你的例子和我已经试过的例子不一样吗?啊,小提琴有一个正确的。当我有更多的时间时,我会看看那些索引和eq方法。@Spitz你是对的-对不起,我在答案中复制了错误的代码行。我已经更新了。至少提琴是对的:你的例子和我已经试过的例子不一样吗?啊,小提琴有一个正确的。当我有更多的时间时,我会看看那些索引和eq方法。@Spitz你是对的-对不起,我在答案中复制了错误的代码行。我已经更新了。至少小提琴是对的:谢谢!让它和这个一起工作。是的,我真的应该好好读一下这些文件:谢谢!让它和这个一起工作。是的。我真的应该更好地阅读文档:嗯……我没有给每个人一个唯一的id,但我已经记不起来了,这是有原因的。如果我再也记不起来了,那就不是个好理由了。我现在已经更新了我的代码,在选择器上使用id,然后按照你的建议使用它来设置值。嗯……我没有给每一个唯一的id,但已经记不起来了,这是有原因的。如果我再也记不起来了,那就不是个好理由了。我现在已经更新了我的代码,在选择器上使用id,然后按照您的建议使用id设置值。