0

我有一个有趣的选择器语句:

$("span#dateofbirth").bind('click', function() {
  $("span#dateofbirth>form>input.inplace_field").blur();
  $("span#dateofbirth>form>input.inplace_field").removeClass("inplace_value");
  $("span#dateofbirth>form>input.inplace_field").datepicker({dateFormat:'yy-mm-dd'});
  $("span#dateofbirth>form>input.inplace_field").addClass("inplace_value");
  $("span#dateofbirth>form>input.inplace_field").focus();
});

它实际上是由其他人插入的,以使 jQuery UI 日期选择器与 Edit-in-Place 插件一起工作。它似乎更像是一种黑客/创可贴。但它有效。

我想继续使用它,但我想将它修改为对任何带有日期的元素更加全局。

所以,我给跨度一个类.datepicker

但是,它并不完全有效,因为绑定更喜欢特定的 ID,以本地化到该元素。

有没有办法解决这个问题,也许将$(this), 与选择器语句的其余部分结合使用?

也许类似的东西?

$("span.datepicker").bind('click', function() { 

  $(this+">form>input.inplace_field").blur();

});
4

3 回答 3

2

选择器是普通的字符串。

你正在尝试写

$(this).find(">form>input.inplace_field")
于 2012-12-13T01:50:48.343 回答
2

利用.find()

$(this).find(">form>input.inplace_field")

或者

$(">form>input.inplace_field" , this)  // Provide a context to search in

JS

$("span#dateofbirth").bind('click', function() {
  $(">form>input.inplace_field" , this).blur()
          .removeClass("inplace_value")
          .datepicker({dateFormat:'yy-mm-dd'})
          .addClass("inplace_value")
          .focus();
});

您应该chaincache选择器来减少查询DOM 的次数。

于 2012-12-13T01:51:17.850 回答
0

子选择器>现在在 jQuery 选择器中已被弃用(在 CSS 中仍然可以)。

您应该使用以下内容:

$(".datepicker").on('click', function() {
  $(this).children("form").children("input.inplace_field").blur()
          .removeClass("inplace_value")
          .datepicker({dateFormat:'yy-mm-dd'})
          .addClass("inplace_value")
          .focus();
});
于 2012-12-13T02:36:23.243 回答