使用jquery选择后如何找到td的表头[关闭]

Posted

技术标签:

【中文标题】使用jquery选择后如何找到td的表头[关闭]【英文标题】:how to find table head of a td after selecting with jquery [closed] 【发布时间】:2012-12-10 08:55:39 【问题描述】:

嗨 如上图所示,我正在创建一个简单的日历以在我的项目中使用。

表格的html

<table>
<tr><th>time</th><th>2012-12-23</th>etc..</tr>
<tr><th>09:00AM</th><td></td><td></td>etc...</tr>

我使用 jquery(selectable) 让那些 td 可选择。

我的问题:当用户点击保存时,将表单数据发布到 php 文件中,我怎样才能包含所选 td 的日期和时间?

例如:我希望当用户点击立即保存(在 img 上方)时,它会发送 “2012-12-24 12:00 PM”


问题已解决“raina77ow”答案。

但是从 cmets 和我的 -ve 投票来看,我认为我的问题很简短,所以我添加了代码以使事情变得清晰:0

HTML

  <FORM id='booking_form'>
A form that u see above in img</form><a id='save'>save</a>
        <h1>Week Calendar</h1>
        <div class="body">
            <table id='schedule'>
                <thead>
                <tr><th>Time</th><?foreach($cal[0] as $d)echo "<th>$d</th>";//$cal[0]contain week days starting from today?></tr>
                </thead>
                <?//create our table by nice clean loop
                $start_time = "09:00:00";
            $end_time = "20:00:00";
            while(strtotime($start_time) <= strtotime($end_time))?>
            <tr>
                <th><?=date("h:i A", strtotime($start_time));?></th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <?
            $start_time = date("H:i:s", strtotime("$start_time +60 minutes"));
            //end while
            ?>

            <tr></tr>
    </table>

点击保存按钮时的JS

var datas=$('#booking_form').serialize();
        var request = $.ajax(
                        url: "./booking/add",
                        type: "POST",
                        data: datas,
                        dataType: "html"
                        );

        request.done(function(msg) $info.html( msg ););
        request.fail(function(jqXHR, textStatus) $info.html( "<div id='error'>" + textStatus +"</div>"););
        request.success(function(data)$info.html(data););
        return false;

这是我的问题,如何将所选字段的时间和日期添加到该 ajax 帖子中。 感谢您的回答,我想出了在#booking_form name=date 和 name=time 中添加 2 个隐藏输入,并添加了选定的选项来为它们添加值。

    $schedule.selectable(
    filter: 'td',
    selected: function( event, ui ) 
        var time = $(ui.selected).parent().children(':first').text();
            date = $(ui.selected).closest('table').children(':first').find('th').eq($(ui.selected).index()).text();
        $('#booking_form').find('[name=date]').val(date);
        $('#booking_form').find('[name=time]').val(time);
    
    );

I find this as the Best answer 非常感谢

【问题讨论】:

这完全取决于您没有共享的现有代码。到目前为止,您还尝试过什么?在发布任何问题之前,请按照您需要确认的ask advice。请记住,只有您想要某些东西并且您问自己它是如何编程的,这本身并不符合编程问题。 - 根据标签,您似乎已经知道答案:Jquery selectors - 请查阅手册了解您的支持选项。 添加了更多细节,我不想让问题更早看起来很大!是的,我知道这是一个选择器问题,但我一直在尝试并无法找出 .closest('table') !!,感谢任何方式 这个答案已经关闭,所以我在this fiddle 中给出答案,因为jQuery.selectable 有自己的方法来做这种工作,这是正确的方法,IMO。 @Sheikh 这就是我要找的东西,非常感谢 【参考方案1】:

获取时间非常容易 - 因为它是点击行的第一个单元格。要获取“日期”列,我们可以使用index 方法。

$('td').click(function() 
  var $cell = $(this);
    time = $cell.parent().children(':first').text();
    date = $cell.closest('table').children(':first').find('th').eq($cell.index()).text();
    alert(date + ' ' + time);
);​

JS Fiddle.

【讨论】:

jQuery.selectable 有自己的方法来做这种工作,this is the proper way,IMO。 @raina77ow,你拯救了我的一天。上帝保佑你【参考方案2】:

试试这个:

$('td').click(function() 
    var $td = $(this);
    var $th = $td.closest('table').find('th').eq($td.index());

    // Get the header text...
    alert($th.text());

    var $firstTD = $td.closest('tr').find('td:first');

    // Get the first td text...
    alert($firstTD.text());
);​

【讨论】:

jQuery.selectable 有自己的方法来做这种工作,this is the proper way,IMO。【参考方案3】:

只要使用纯 javascript,一旦您拥有 &lt;td&gt;,您就可以获得:

var time = td.parentNode.cells[0].firstChild.nodeValue,
    date = td.parentNode.parentNode.rows[0].cells[td.cellIndex].firstChild.nodeValue;

【讨论】:

我不知道你在谈论朋友,抱歉我不是 js 人:( jQuery.selectable 有自己的方法来做这种工作,this is the proper way,IMO。

以上是关于使用jquery选择后如何找到td的表头[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 或 javascript 选择第一个带有类的 td [关闭]

jquery select2 如何在选择后不关闭

如何在 jQuery DataTables 中完全抑制表头?

如何根据显示找到输入值:jquery中的块

如何使 <select> 的第一个选项不使用 jquery 向上移动? [关闭]

jQuery - 搜索或排序后最接近的 TD 值