Jquery 加载时应用类
我想应用以下样式=Jquery 加载时应用类,jquery,Jquery,我想应用以下样式='position:relative;左:42px;'添加到标签。而onfocus必须删除这种样式 <label for'13321'>Name</label><input type='text' id='13321' class='box'> <label for'14422'>Name</label><input type='text' id='14422' class='box'> 名称 名称 Jq
'position:relative;左:42px;'如果文本框的值为空,则将代码>添加到标签。而onfocus必须删除这种样式
<label for'13321'>Name</label><input type='text' id='13321' class='box'>
<label for'14422'>Name</label><input type='text' id='14422' class='box'>
名称
名称
Jquery:
$(document).ready(function(){
$('input.box').each(function(){
if($(this).val()=="") {
$(this).addClass('new-class');
}
})
$('input.box').focus(function(){
$(this).removeClass('new-class')
})
})
CSS:
将样式放入一个类中,说yourClass
,然后可以使用以下命令:
$(function() {
$('input.box').filter(function() {
return $(this).val() === "";
})
.prev('label') // go to label
.addClass('yourClass')
.end() // back to input
.one('focus', function() {
$(this).prev('label').removeClass('yourClass');
});
});
或者不使用过滤器
(您必须测试哪些性能更好):
编辑:我没有注意到您想要将类添加到标签中。固定的
更新:如果要重新应用该类,如果该值保持为空,则必须添加一个blur
侦听器,并使用focus
而不是上面的one
:
.focus(function() {
$(this).prev('label').removeClass('yourClass');
})
.blur(function() {
if($(this).val() === "") {
$(this).prev('label').addClass('yourClass');
}
})
css
js
演示
所以,我不明白,你是在尝试应用一个类还是一种风格?这是行不通的。您必须迭代所有输入元素if($('input.box').val()==“”)
将只比较第一个找到的元素的值。他希望类与标签
而不是文本
$('input.box:not([value]), input.box[value=""]')
.prev('label')
.addClass('yourClass')
.end()
.one(...
.focus(function() {
$(this).prev('label').removeClass('yourClass');
})
.blur(function() {
if($(this).val() === "") {
$(this).prev('label').addClass('yourClass');
}
})
.empty{
position: relative; left: 42px;
}
$(function() {
$(":input:text").each(function(){
if( $(this).val() == "")
{
$(this).prev("label").addClass("empty");
$(this).focus(function(){
$(this).prev("label").removeClass("empty");
})
}
});
});