-1

我正在研究这个 jQuery 代码,它获取 SSRS Report Viewer 生成的网页,然后用 datepicker(标准 jQuery)覆盖它。

在这里,我们寻找接受日期的输入文本框:

var span = innerTable.find("span:contains('Date')");
if (span) {
    var innerRow = $(span).parent().parent();
    var innerCell =  innerRow.find("td").eq(1);
    var textFrom = innerCell.find("input[type=text]");
    innerCell = innerRow.find("td").eq(4);
    var textTo = innerCell.find("input[type=text]"); 
}

所以我很好奇变量中有什么样的值textTo。那是因为在后面的代码中,我们说:

$(textTo).focus(function () {
    $(textTo).datepicker("show");   
});

另外,有什么作用focus(function ()

任何提示表示赞赏,谢谢!

4

1 回答 1

2

它将是代表节点的jQuery 对象。input[type=text](注意:在您的场景中,可能只有一个这样的节点,但您应该知道它会find返回与选择器匹配的所有节点。)它基本上是 jQuery 对表示特定 DOM 对象的所有信息的包装。您可以使用该对象来获取有关input元素的各种信息——例如它的value、CSS 样式、父级等——还可以使用它来操作元素——删除它,在它之前添加一些东西,或者添加一个事件侦听器。

这是一个代码演练:

var innerRow = $(span).parent().parent(); // the grandparent of the `span` node
var innerCell =  innerRow.find("td").eq(1); // the second (index 1) table cell inside the row we just found in the previous line
var textFrom = innerCell.find("input[type=text]"); // the input elements inside that cell
innerCell = innerRow.find("td").eq(4); // the fifth (index 4) table cell inside the row from line 1
var textTo = innerCell.find("input[type=text]"); // the input elements inside the cell found in the previous line

至于问题的第二部分,当元素获得焦点时,focus侦听器将执行一个函数input- 即光标在其中移动。当用户直接在元素内部单击或从表单中的另一个元素中单击它时,可能会发生这种情况。具体来说,您的代码说:当这input获得焦点时,显示日期选择器。

于 2013-02-26T00:27:13.387 回答