【发布时间】:2018-07-31 08:30:53
【问题描述】:
所以,我阅读了很多关于这个问题的信息。我在网上找不到任何东西来解决我的问题。下面是一段代码:
jQuery( 'input:not([type=submit]):not([type=hidden]), textarea' ).on( 'click', function() {
$this = jQuery( this );
parentWrap = $this.parents( 'label' );
inputLabel = parentWrap.find( '.label' );
otherInput = jQuery( 'input:not([type=submit]):not([type=hidden]), textarea' ).not( this );
if ( ! parentWrap.is( '.focused' ) ) {
parentWrap.addClass( 'focused' );
setTimeout( function() {
inputLabel.addClass( 'focused' );
}, 1000 );
}
otherInput.each( function( index, elem ) {
elem = jQuery( elem );
elemVal = elem.val();
elemParentWrap = elem.parents( 'label' );
elemInputLabel = elemParentWrap.find( '.label' );
if ( elemParentWrap.is( '.focused' ) ) {
if ( 0 === jQuery.trim( elemVal ).length ) {
elemParentWrap.removeClass( 'focused' );
setTimeout( function() {
elemInputLabel.removeClass( 'focused' );
}, 1000 );
}
}
});
});
过程:
- 我单击输入,与该输入相关的两个元素添加了
.focused类。其中一个类是延迟添加的。 - 函数的第二部分遍历页面上的每个输入,除了
点击的一个,检查它的元素是否得到类
.focused。当没有找到类时,它不会执行任何操作。 - 我单击同一页面上的另一个输入,它通过第 1 点。一切正常。与任何其他输入(单击的除外)相关的每两个元素(
label和.label)都应该删除其类.focused,(其中一个相关元素将延迟删除类),但是不会发生延迟移除。
如何解决?
PS,希望我把一切都说清楚。如果没有,请提出问题。代码中还有小的输入值检查。请忽略它,因为它与问题无关。
PS2,当我从第二个函数中删除超时时,与输入相关的两个元素都删除了它们的类。
【问题讨论】:
-
也许显示一些渲染的标记?
标签: jquery settimeout each