我在 JQuery 的小项目中工作,我在从html元素中删除错误类时遇到问题。
我使用$('selector').on('input')
来获取事件并删除input
类,我的问题是当使用JavaScript生成字段时;
示例
$('#one').on('input',function(){
$('#two').val( $('#one').val() );
});
$(':input').on('input', function ()
{
if ($(this).hasClass('example'))
{
$(this).removeClass('example');
}
});

.example
{
color: orange;
background-color: black;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Normal Case</h2>
<input type="text" class="example">
<h2>Problem</h2>
<label for="one">#ONE</label>
<input type="text" class="example" id="one">
<br/>
<label for="two">#TWO</label>
<input type="text" class="example" readonly="readonly" id="two">
&#13;
在这种情况下,我在#two
更改时更改#one
值,#one
删除.example
,但#two
不要
我需要从.example
#two
input
课程
编辑:我想以通用的方式进行,因为我的项目中有很多这种情况
是否有某种方法可以触发这种变化?
非常感谢!
答案 0 :(得分:1)
在true
语句的if
分支内,使用 .nextAll()
方法以及选择器查找下一个input
语句this
。这样,当第一个输入删除了类时,它后面的下一个输入也将删除它的类。
另外,更改您的input
事件设置,以便将其设置为首先处理某个类的input
元素,并为每组input
提供第一个那个班。
$('#one').on('input',function(){
$('#two').val( $('#one').val() );
});
// Only when an input with the "input" class gets input
$('input.input').on('input', function () {
if ($(this).hasClass('input')) {
$(this).removeClass('input');
// Find the next input sibling that follows "this"
$(this).nextAll("input").removeClass("input");
}
});
.input {
color: orange;
background-color: black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Normal Case</h2>
<input type="text" class="input">
<h2>Problem</h2>
<label for="one">#ONE</label>
<input type="text" class="input" id="one">
<br>
<label for="two">#TWO</label>
<input type="text" class="input" readonly="readonly" id="two">
答案 1 :(得分:1)
也许我下面写的代码可以帮到你。它并不完美,但它是一个很好的起点。
我添加了一个自定义属性,我将apply
称为相同&#34; group&#34;的输入。
我还修改了data-group
的监听器,使得从单个监听器功能中,您将听取所有输入。
检查这是否对您有所帮助。
input
&#13;
$('.example').on('input',function(){
var value = this.value;
var groupName = $(this).attr('data-group');
var groupElems = $("[data-group='"+groupName+"']");
groupElems.removeClass('example');
groupElems.val(value);
});
&#13;
.example
{
color: orange;
background-color: black;
}
&#13;
答案 2 :(得分:0)
如果当前字段#one
使用documentation:
$(':input').on('input', function () {
if(($(this).is("#one"))) {
if ($('#two').hasClass('example'))
{
$('#two').removeClass('example');
}
}
if ($(this).hasClass('example'))
{
$(this).removeClass('example');
}
});