jQuery - 添加删除类 - 设置输入值
jQuery - Add Remove Class - Set Value Of Input
嗨,我需要这个来添加删除类并设置下一个所有输入的值。
我可以让它工作,但它只能工作一次。我需要它更像一个嘟嘟。
$(document).ready(function () {
$(".fa-circle").click(function () {
$(this).nextAll('input').first().val('Yes');
$(this).removeClass("fa-circle light_gray").addClass("fa-check green");
});
$(".fa-check").click(function () {
$(this).nextAll('input').first().val('No');
$(this).removeClass("fa-check green").addClass("fa-circle light_gray");
});
});
.green {
color: #8FCE35;
}
.light_gray {
color: #DDDDDD;
}
.point {
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<table class="candi_elections_table" align="center" style="text-align: left;">
<tbody>
<tr>
<td>198</td>
<td>
<span class="fa-check font16 green point">CLICK HERE</span>
<input id="198" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="198" vk_11844="subscribed">
</td>
<td>Something 1</td>
</tr>
<tr>
<td>200</td>
<td>
<span class="fa-circle font16 light_gray point">CLICK HERE</span>
<input id="200" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="200" vk_11844="subscribed">
</td>
<td>Something 2</td>
</tr>
<tr>
<td>201</td>
<td>
<span class="fa-check font16 green point">CLICK HERE</span>
<input id="201" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="201" vk_11844="subscribed">
</td>
<td>Something 3</td>
</tr>
<tr>
<td>202</td>
<td>
<span class="fa-circle font16 light_gray point">CLICK HERE</span>
<input id="202" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="202" vk_11844="subscribed">
</td>
<td>Something 4</td>
</tr>
</tbody>
</table>
任何人都能看出我做错了什么?
- FA-Check和FA-circle是很棒的字体
我也在jsfiddle中得到了它https://jsfiddle.net/9bonuyyn/1/
您需要动态添加类的事件委派。您也可以像下面这样缩短js
。
$('.candi_elections_table').on("click", ".fa-circle, .fa-check", function () {
if ($(this).hasClass('fa-circle')) {
$(this).nextAll('input').first().val('Yes');
} else {
$(this).nextAll('input').first().val('No');
}
$(this).toggleClass("fa-check green fa-circle light_gray");
});
更新的小提琴
$(SELECTOR)
将仅选择DOM
中存在的那些元素,并且与selector
匹配。
当元素的类正在动态更新时,请使用Event delegation
基本上,我们将事件附加到父级上,该事件在应用程序的整个生命周期中持续存在,并通过指定上述父级的子项target-element
。
$(document).ready(function() {
$('.candi_elections_table').on('click', ".fa-circle", function() {
$(this).nextAll('input').first().val('Yes');
$(this).removeClass("fa-circle light_gray").addClass("fa-check green");
});
$('.candi_elections_table').on('click', ".fa-check", function() {
$(this).nextAll('input').first().val('No');
$(this).removeClass("fa-check green").addClass("fa-circle light_gray");
});
});
.green {
color: #8FCE35;
}
.light_gray {
color: #DDDDDD;
}
.point {
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<table class="candi_elections_table" align="center" style="text-align: left;">
<tbody>
<tr>
<td>198</td>
<td>
<span class="fa-check font16 green point">CLICK HERE</span>
<input id="198" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="198" vk_11844="subscribed">
</td>
<td>Something 1</td>
</tr>
<tr>
<td>200</td>
<td>
<span class="fa-circle font16 light_gray point">CLICK HERE</span>
<input id="200" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="200" vk_11844="subscribed">
</td>
<td>Something 2</td>
</tr>
<tr>
<td>201</td>
<td>
<span class="fa-check font16 green point">CLICK HERE</span>
<input id="201" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="201" vk_11844="subscribed">
</td>
<td>Something 3</td>
</tr>
<tr>
<td>202</td>
<td>
<span class="fa-circle font16 light_gray point">CLICK HERE</span>
<input id="202" class="" type="text" data-tooltip="" data-load-state="" data-inputmask="" style="" title="" placeholder="" value="" name="202" vk_11844="subscribed">
</td>
<td>Something 4</td>
</tr>
</tbody>
</table>
小提琴演示
它只工作一次,因为你在$(document).ready
时添加了事件侦听器,当时只有第一个和第三个有类fa-circle
,所以这两个元素不会fa-check
单击事件运行,即使在单击之后 - 你向它们添加fa-check
类。第二和第四也是如此。
请尝试以下操作:
$(document).ready(function(){
$(".fa-circle, .fa-check").click(function(){
var text = $(this).hasClass('fa-circle') ? 'Yes':'No';
$(this).nextAll('input').first().val(text);
$(this).toggleClass( "fa-circle light_gray fa-check green" )
});
});
希望这是有用的。
相关文章:
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- 如何使用ian:accounts-ui-botstrap-3根据Meteor中的用户输入设置配置文件字段值
- 使用JS将输入设置为只读
- 正在为禁用的输入设置标题属性
- 用户输入设置数组长度
- 如何使用来自@Html.TextBoxFor的用户输入设置@Html.RadioButtonFor的值
- 根据其他输入设置最大值
- PHP论坛建设,输入设置栏(粗体,..链接等),如何申请
- 为输入设置最大值时出现插值错误
- jQuery MaskMoney - 将输入设置为字段的开头
- 在 Javascript 中将文本输入设置为变量
- (联合国)通过字符串输入设置嵌套数组值
- 将类型为数字的输入设置为字符串
- jQuery UI Slider(从文本输入设置)
- 根据第一个询问的输入设置输入类型范围的最小值
- 如何通过JavaScript将HTML5输入设置为必需
- 根据用户在Javascript中的输入设置Date()对象的正确方法是什么
- 如何在没有提交按钮AngularJS的情况下将所有输入设置为$touch
- angularjs将默认日期输入设置为今天
- 如何将用户尝试填充数据的输入旁边的所有输入设置为只读