Jquery 尝试在动态表单上设置聚焦输入的标签样式

Jquery 尝试在动态表单上设置聚焦输入的标签样式,jquery,css,forms,label,Jquery,Css,Forms,Label,已解决:我的问题似乎是由CSS继承引起的。为了记录在案,我原始问题中的第二个片段实际上起了作用 我有带输入和标签的html表单 当我聚焦一个输入时,我可以使用jquery成功地更改标签样式。这是使用以下代码段完成的: $("input, textarea").focus(function(){ $("label[for='" + this.id + "']").addClass("labelfocus"); }) .blur(function() { $("label").removeC

已解决:我的问题似乎是由CSS继承引起的。为了记录在案,我原始问题中的第二个片段实际上起了作用

我有带输入和标签的html表单

当我聚焦一个输入时,我可以使用jquery成功地更改标签样式。这是使用以下代码段完成的:

$("input, textarea").focus(function(){
  $("label[for='" + this.id + "']").addClass("labelfocus");
})
.blur(function()
{
  $("label").removeClass("labelfocus");
});
$(document).on({
    focus: function() {
        $("label[for='" + this.id + "']").addClass("labelfocus");
    },
    blur: function() {
        $("label").removeClass("labelfocus");
    }
}, "input, textarea");
但是,这不适用于动态生成的表单

我已经尝试在(…)上使用jquery的“$(document).on,但这对我来说也不行。请参阅下面的代码片段:

$("input, textarea").focus(function(){
  $("label[for='" + this.id + "']").addClass("labelfocus");
})
.blur(function()
{
  $("label").removeClass("labelfocus");
});
$(document).on({
    focus: function() {
        $("label[for='" + this.id + "']").addClass("labelfocus");
    },
    blur: function() {
        $("label").removeClass("labelfocus");
    }
}, "input, textarea");

有什么建议吗?谢谢!

可能有更干净的方法,但我会这样尝试

$('input, textarea').on('focus', function() {
$("label[for='" + this.id + "']").addClass("labelfocus");
});

$('input, textarea').on('blur', function() {
$("label").removeClass("labelfocus");
});

而不是
$(document)。如果您使用
$(“input,textarea”)。在
上,我认为它会起作用。

我还没有测试过这个或任何东西,但是您不想进一步指定模糊事件来使用完整的$(“label[for='“+this.id+”])


我的想法告诉我,如果你专注于一个输入,鼠标单击或制表符直接指向另一个输入,那么会发生冲突的聚焦/模糊操作。

不幸的是,这不起作用。我认为必须在
$(文档)的位置指定一个祖先元素
目前是。我也尝试使用动态生成的包含元素的id,但也不起作用。Oops。我的问题似乎是由CSS继承引起的。请注意,我原始问题中的第二个片段实际上起了作用。我没有任何冲突的焦点/模糊问题。但你的建议非常明确这是一个很好的方法。至少模糊一个特定的标签比模糊每一个标签要省力。