jQuery查找具有下一个特定类型元素的元素
jQuery find element with next element of specific type
我有包含不同输入元素的"组件"。这些组件有一个复选框,允许用户在元素上切换启用/禁用。这是当前禁用输入和选择的代码。
$(".activeComponentToggle input:checkbox").on("change", function () {
if ($(this).is(':checked')) {
$(this).closest("div.component").addClass("activeComponentWell");
$(this).closest("div.component").removeClass("inactiveComponentWell");
$(this).closest("div.component").find("input.form-control").prop('disabled', false);
$(this).closest("div.component").find("select.form-control").prop('disabled', false);
} else {
$(this).closest("div.component").addClass("inactiveComponentWell");
$(this).closest("div.component").removeClass("activeComponentWell");
$(this).closest("div.component").find("input.form-control").prop('disabled', true);
$(this).closest("div.component").find("select.form-control").prop('disabled', true);
}
});
现在我也有了这种HTML元素
<div class="input-group date" id="datetimepickerRanged11">
<input type="text" id="datepickerRanged811" class="form-control">
<span class="input-group-addon"><span class="glyphicon-calendar glyphicon"></span></span></div>
要禁用此元素,我需要取消绑定span unbind("click");
的click
我该怎么做?如果input的next()元素是一个span,我需要取消它的绑定。
首先可以通过缓存选择器来DRY代码。其次,我不会取消绑定span的click处理程序,因为当您需要重新附加它时,这将使它变得很痛苦。相反,我将使用data
属性来指示span
单击是否被阻止。像这样:
$(".activeComponentToggle input:checkbox").on("change", function () {
var $component = $(this).closest("div.component");
if ($(this).is(':checked')) {
$component
.addClass("activeComponentWell")
.removeClass("inactiveComponentWell");
.find("input.form-control").prop('disabled', false).end()
.find("select.form-control").prop('disabled', false).end()
.find('span.input-group-addon').data('disabled', false)
}
else {
$component
.addClass("inactiveComponentWell")
.removeClass("activeComponentWell")
.find("input.form-control").prop('disabled', true).end()
.find("select.form-control").prop('disabled', true).end()
.find('span.input-group-addon').data('disabled', true)
}
});
然后在span
中单击处理程序:
$('span.input-group-addon').click(function() {
if (!$(this).data('disabled')) {
// do something
}
});
相关文章:
- 查找数组javascript中包含的元素类型
- ReactJS - 元素类型无效错误
- 解析 /page.xhtml 时出错:跟踪错误[行: 42] 与元素类型“id”关联的属性“{1}”应使用左引号
- 未捕获错误:不变冲突:元素类型无效:应为字符串
- 根据Id确定元素类型
- 未捕获的不变冲突:元素类型无效(react、webpack、循环导入)
- AngularJS指令,该指令使用模板中的原始元素类型
- 使用jquery更改元素类型
- Java 脚本:递归地遍历关联的 HTML 文件的 Dom,并打印遇到的元素类型
- 按元素类型从数组中删除元素
- 检查表格单元格中存在的元素类型
- 元素类型“date”在由getElementsByTagName()访问时将其显示为“文本”
- jQuery,如何在HTML中正确查找父元素的元素类型
- 如何获取svg元素类型
- 反应.js - “不变冲突:元素类型无效:预期字符串”简单按钮
- 使用id或类获取元素类型
- 如何根据表单元素类型验证调查
- 未捕获的错误:不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数,但得到:对象
- Getting Invariant违规:使用createBrowserHistory时元素类型无效react-route
- 选中单击的元素类型