jQuery找到深层嵌套的输入元素

时间:2012-05-01 16:43:47

标签: jquery asp.net forms traversal descendant

我在列出here

的项目中使用了表单控件

当我将它包含在我的页面中时,它会生成动态html的全部内容,以便很好地格式化所有内容。但是,我试图将jQuery datepicker应用于表单中的一些输入元素,我不知道如何选择我想要的输入。

我已经将SuperForm直接嵌套在一个名为“div”的bookings中,所以我知道我可以将它作为一个起点,但我需要通过该div的所有后代直到我找到正确的输入,我知道它们出现在哪个顺序,所以我假设我可以在这里使用nth-child(x),但到目前为止我还没有运气。任何帮助将不胜感激!

解决了!这是我的解决方案:

$("#bookings :input[type='text']:eq(2)").datepicker({...});

5 个答案:

答案 0 :(得分:1)

解决了!这是我的解决方案:

$("#bookings :input[type='text']:eq(2)").datepicker({...});

答案 1 :(得分:0)

将类,属性或id应用于所需的元素,或以这种方式检查每个元素。

$('#bookings input').each(function () {
   //Check here

 });

答案 2 :(得分:0)

您显然需要一些标识符/选择器来过滤输入元素。

$('#bookings').find('.applyDatePicker').datepicker({...});

答案 3 :(得分:0)

使用HTML5支持的新输入类型。

新的输入类型是:

  • color
  • 日期
  • datetime
  • datetime-local
  • 电子邮件
  • 号码
  • 范围
  • 搜索
  • tel
  • 时间
  • url

如果您将这些设置为日期(或日期时间),则可以使用以下选项来选择所有元素:

$('input[type="date"]').each(function(index,element){
   $(element).datepicker...
}

答案 4 :(得分:0)

你在使用简单的选择器时是对的,但如果你的主选择器很复杂,你可能无法在主选择器内使用输入选择器,所以最好使用

.find(" :input[type='text']")

例如在可排序方案中,如果主选择器如下:

$("#ulId").children('li:not(.ui-sortable-placeholder)')
如果编码如下,你就无法获得任何元素:

$("#ulId").children('li:not(.ui-sortable-placeholder) :input[type='text']')

但我们可以使用它:

$("#ulId").children('li:not(.ui-sortable-placeholder)').find(" :input[type='text']")

希望得到这个帮助。