完全被这里难住了。 尝试一些非常简单的东西,但它不起作用:
$("input.input1, textarea.input1").focus(function(){
$(this).addClass("input2").removeClass("input1");
});
$("input.input2, textarea.input2").blur(function(){
$(this).addClass("input1").removeClass("input2");
});
基本上模糊不会发射。 我点击输入框,框就会改变。 我点击了框,没有任何反应。 对此有任何帮助都很棒。
答案 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");
});
至于为什么你的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)
答案 4 :(得分:0)
此外,如果你的元素加载ajax使用$(document).on(事件,选择器,函数),因为标准例如。 $(选择器).click(function()...将不起作用