我有一个有趣的选择声明:
$("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 datepicker与Edit-in-Place插件一起工作。它看起来比任何东西都更像是黑客/创可贴。但它确实有效。
我想继续使用它,但我想修改它以使任何具有Date的元素更加全局。
所以,我给了跨度一类.datepicker
但是,它并不常用,因为绑定更喜欢特定的ID,以便本地化到该元素。
有没有解决方法,可能使用$(this)
和其他选择器语句?
也许是沿途的事情?
$("span.datepicker").bind('click', function() {
$(this+">form>input.inplace_field").blur();
});
答案 0 :(得分:2)
选择器是普通的字符串。
您正在尝试撰写
$(this).find(">form>input.inplace_field")
答案 1 :(得分: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();
});
您应该chain
或cache
选择器减少查询 DOM的次数。
答案 2 :(得分: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();
});