jQuery模糊()不工作?

时间:2011-11-28 00:08:26

标签: jquery blur

完全被这里难住了。 尝试一些非常简单的东西,但它不起作用:

$("input.input1, textarea.input1").focus(function(){
    $(this).addClass("input2").removeClass("input1");
});
$("input.input2, textarea.input2").blur(function(){
    $(this).addClass("input1").removeClass("input2");
});

基本上模糊不会发射。 我点击输入框,框就会改变。 我点击了框,没有任何反应。 对此有任何帮助都很棒。

5 个答案:

答案 0 :(得分:15)

您需要使用委托处理程序,因为在应用处理程序时输入没有类input2

$(document).on('focus','input.input1, textarea.input1', function() {
    $(this).addClass('input2').removeClass('input1');
});
$(document).on('blur','input.input2, textarea.input2', function() {
    $(this).addClass('input1').removeClass('input2');
});

然而,可能有更好的方法来做到这一点。我建议使用第三个类来标记需要切换类的输入,然后在事件发生时切换类。

$('.needsToggle').on('focus blur', function() {
     $(this).toggleClass('input1 input2');
});

如果他们总是要开始上课input1,您可以使用该课程代替needsToggle

答案 1 :(得分:3)

因为你影响了相同的元素,所以链接起来更容易:

$("input.input1, textarea.input1").focus(function(){
    $(this).addClass("input2").removeClass("input1");
}).blur(function(){
    $(this).addClass("input1").removeClass("input2");
});

JS Fiddle demo

至于为什么你的jQuery不能正常工作,我不确定,我害怕;虽然我怀疑它与选择器有关。

答案 2 :(得分:1)

试试这段代码:

$("input.input1, textarea.input1").bind('focus blur', function(){
    $(this).toggleClass("input2").toggleClass("input1");
});

如果不起作用,您可能需要使用focusout代替blur

$("input.input1, textarea.input1").bind('focus focusout', function(){
    $(this).toggleClass("input2").toggleClass("input1");
});

答案 3 :(得分:0)

如果您使用的是jQuery,则需要使用.delegate()。 1.7。

.on()如果你的身高是1.7或更高。

请勿使用.live(),因为它的速度较慢。

答案 4 :(得分:0)

此外,如果你的元素加载ajax使用$(document).on(事件,选择器,函数),因为标准例如。 $(选择器).click(function()...将不起作用