如何使用jquery获取特定可见div的最后一个元素

时间:2014-07-03 11:24:33

标签: javascript jquery html knockout.js

我在单个html页面中存在多个屏幕并使用敲除绑定,显示或隐藏特定屏幕。我需要在输入字段中循环选项卡焦点(如果存在),仅在所示的div中。我也附上了一个小demo

  1. 如果showPersonalScreen和showFilterScreen都可见,使用我的JS代码,tab事件在LABEL_FILTER_PATIENTID输入字段处停止
  2. 如果showPersonalScreen可见,使用该JS代码,tab事件不会停止,但我的要求是它应该停在LOCATION输入字段
  3. 如果showFilterScreen可见,使用该JS代码,tab事件正确地停止input_PatientID_filter。这是因为它是定义的HTML中具有最后输入字段的最后一个div。
  4. 下面用于获取最后一个输入字段的JS代码并禁用tab键的默认行为

     $('input').last().on('keydown', function (e) {
            if (e.keyCode == 9) {
                document.body.firstElementChild.focus();
                e.preventDefault();
                return false;
            }
        });
    

    敲除绑定以显示和隐藏特定的div

    var viewModel = {
            showFilterScreen : ko.observable(true),
            showPersonalScreen : ko.observable(false)
        };
        ko.applyBindings(viewModel);
    

    所以我的要求是,应该有一些通用的JS代码,其中tab事件在可见div的最后一个输入字段中停止,如果可见div没有任何输入字段,那么tab根本不起作用。

1 个答案:

答案 0 :(得分:0)

试试这个

要查找可见div是否包含任何输入字段,请使用以下代码。如果长度> 0,则表示div具有输入字段

 $("#yourdivid").find("input:visible").length

要查找最后一个输入字段,请使用此代码

$("#yourdivid").find("input:visible").last()