jQuery:tbody> tr选择器不适用于.hover()方法

时间:2016-07-08 00:45:34

标签: javascript jquery knockout.js html-table

我有一个xhtml页面,我主要使用Knockout.JS管理,但对于简单的DOM操作,我使用的是jQuery。

这是我的表格:

 <table style="font-size: small; margin-left: -1em;
                           border-right: transparent; border-bottom: transparent;" 
                           id="appointmentsTable" class="table table-bordered table-hover">
                        <thead>
                            <tr>
                                <th style="display: none;">id</th>
                                <th class="hand-on-hover" data-bind="click: sortByDate">
                                    #{bigcopy.tableDate} <i id="appDateCri"></i>
                                </th>
                                <th>#{bigcopy.tableTime}</th>
                                <th class="hand-on-hover" data-bind="click: sortByName">
                                    #{bigcopy.tableClient} <i id="appNameCri"></i>
                                </th>
                                <th class="hand-on-hover" data-bind="click: sortByType">
                                    #{bigcopy.tableType} <i id="appTypeCri"></i>
                                </th>
                                <th>#{bigcopy.tableMessage}</th>
                                <th>#{bigcopy.tableEmail}</th>
                            </tr>
                        </thead>
                        <tbody id="fbody" data-bind="foreach: appointments">
                            <tr>
                                <td style="display: none;" data-bind="text:id"></td>
                                <td data-bind="text:date"></td>
                                <td data-bind="text:time"></td>
                                <td data-bind="text:clientName"></td>
                                <td data-bind="text:type"></td>
                                <td style="max-width: 15em;" data-bind="text:message"></td>
                                <td data-bind="text:email"></td>
                                <td style="border: transparent; display: none;">
                                    <span style="color:#d9534f;" class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                                    <span style="color: #f0ad4e; margin-left: 0.75em;" class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                                </td>
                            </tr>
                        </tbody>
                    </table>

正如你在tbody中看到的最后一个td&gt; tr被隐藏了。它将保存用于编辑/删除表格约会的按钮。我的意图是只在行停留时显示它:

$("#appointmentsTable > tbody > tr").hover(                
            function () {
                //mouseover
                console.log("hovered");
                $(this).find("td:last").css("display", "block");
            }, function () {
        //mouseout
        $(this).find("td:last").css("display", "none");
    });

我在那里输入了console.log()语句,至少看看jQuery是否识别了选择器。不幸的是,事实并非如此。但是将选择器更改为:

 $("#appointmentsTable tr").hover

和处理程序:

$(this).css("background-color", "red");

...努力将标题的背景描绘成红色。要剥离可能的问题,我就是如何获得选择器:

enter image description here

..然后我右键点击并选择:复制 - &gt;的选择

任何提示都会受到赞赏。它可能与页面的.xhtml扩展有关,但对我来说别无选择 - 我不能使用啊:dataTable,因为该表是从REST资源填充和更新的。

1 个答案:

答案 0 :(得分:0)

似乎是jQuery-KO-xhtml兼容性的一些错误。我已经尝试了很多东西,包括xPath,为每个tr设置自定义ID(具有某种模式)。没有任何效果。我只是无法射击'tbody'。在最后,我使用Knockout.JS实现了一个简单的决定:

我将此添加到约会课程中:

builder
    .RegisterType<Db1Repository>()
    .WithParameter(ResolvedParameter.ForNamed<IDbConnection>("Db1"));

以及这些与'tr'和'td'元素的绑定:

var ents = from ent in dal.ents
           select ent;

string s1 = ents.first().Value1;   // I got 1 here
Console.ReadLine();    // When the system is waiting for my input. I change the same record manually in DB, I change Value2 of ent from 2 to 3 here. 
string s2 = ents.first().Value2    // I got 2 here.

我希望它对任何人都有帮助。