jQuery循环html,在更改时,查找类,删除它
jQuery loop over html, on change, find class, remove it
所以我在一个页面上有多个带有选择的表单。对于每个表单,我希望提交按钮有一个禁用类,直到选择一个选项,此时按钮应该丢失禁用的类(每个表单必须独立于其他表单工作(。我似乎无法使用"下一步"或"查找"来使其正常工作。这是我的代码:
<-- FORM ONE -->
<form>
<label for="available-countries-#variables.x#">Available Countries</label>
<select id="available-countries-#variables.x#" class="form-control available-countries-selector">
<option value="0">-- Select Country --</option>
<option value="1">Australia</option>
<option value="2">Brazil</option>
</select>
<button type="submit" class="btn btn-default disabled" role="button">Submit</a>
</form>
<-- FORM TWO -->
<form>
<label for="available-countries-#variables.x#">Available Countries</label>
<select id="available-countries-#variables.x#" class="form-control available-countries-selector">
<option value="0">-- Select Country --</option>
<option value="1">Argentina</option>
<option value="2">France</option>
</select>
<button type="submit" class="btn btn-default disabled" role="button">Submit</a>
</form>
-- JS --
$('.available-countries-selector').change(function(){
if($(this).val() !== '0'){
$(this).find('btn-default').removeClass('disabled');
} else {
$(this).find('btn-default').addClass('disabled');
}
});
任何帮助将不胜感激
您需要在当前表单中查找按钮。最好的方法是使用 closest()
.
var isEnabled = $(this).val() !== '0';
$(this).closest("form").find('btn-default').toggleClass('disabled', !isEnabled);
我将如何使用事件冒泡对其进行编码:
$(document).on("change", ".available-countries-selector", function(){
var isDisabled = $(this).val() === "0";
$(this).closest("form").find('btn-default').toggleClass('disabled', isDisabled);
});
理想情况下,您将document
设置为更接近表单的元素。
在 JS 上下文中,this
是<select>
元素。由于btn-default
不在选择范围内,因此它不会使用该代码找到它。
相反,您可以转到最近的表单父级并从那里找到它:
$(this).closest("form").find('btn-default').removeClass('disabled');
提交按钮不在您使用的选择器中$(this).find
因此不起作用。但是,您可以使用$(this).next()
因为提交按钮紧跟在选择下拉列表之后,如下所示:
$('.available-countries-selector').change(function(){
if($(this).val() !== '0'){
$(this).next().removeClass('disabled');
} else {
$(this).next().addClass('disabled');
}
});
JSFiddle
你用一个</a>
结束你的<button>
,你的find()
没有寻找类名(因为你已经排除了点(,也找不到同级。使用next([selector])
查找下一个.btn-default
:
$('.available-countries-selector').change(function(){
if($(this).val() !== '0'){
$(this).next('.btn-default').removeClass('disabled');
} else {
$(this).next('.btn-default').addClass('disabled');
}
});
http://jsfiddle.net/mL9h2fof/
更新(谢谢@TrueBlueAussie(
你可以使用 .toggleClass 使这更简单:
$('.available-countries-selector').change(function(){
$(this).next('.btn-default').toggleClass('disabled', $(this).val());
});
http://jsfiddle.net/mL9h2fof/1/
相关文章:
- JavaScript-如何按类查找元素并删除此类
- Dynamics CRM-在父查找为空时删除依赖查找筛选
- 查找文档,然后在数组中查找条目并将其从数组中删除
- javascript查找字符串并删除以下所有字符
- 使用javascript查找并删除所有出现的短代码
- 查找并删除对象中的空特性
- 查找模式并仅删除几个字符
- 查找文本并将其删除 jquery
- 从对象数组中查找和删除对象
- 如何从服务器中查找和删除临时数据
- 如何查找具有相同 data-* 属性的元素并删除重复项
- 按数据属性查找和删除项目
- 如何从指令中查找和删除 DOM 元素
- 使用纯 javascript 查找并删除特定元素
- 查找和删除对象中的项目
- 使用 PHP 查找并删除一些 javascript 标签,但保留另一个标签
- 每次在文本区域中输入或删除值时运行函数以立即查找总和
- 从数组中查找并删除元素
- 可排序列表+查找已删除的索引
- 正在数组中查找要删除的特定对象