javascript - 在jquery中通过id、class和attr组合查找元素
问题描述
我有以下代码:
$("#modal-bool-element").change(function(e) {boolSettings($(e.target))});
function boolSettings(e) {
elem = e;
var boolSettingsParent = elem.closest("#bool-settings");
if (elem.is(":checked") == true) {
elem.val(true);
boolSettingsParent.find("#modal-bool-show").prop("disabled", false);
} else {
elem.val(false);
boolSettingsParent.find(".bool-reset, .bool-offset").hide();
boolSettingsParent.find("#modal-bool-show").val("never");
boolSettingsParent.find("#modal-bool-show").prop("disabled", true);
boolSettingsParent.find("#modal-bool-offsetValue, #modal-bool-reset, #modal-bool-offsetUnit").val("");
}
}
我想做的是将属性的值与类名或id一起传递给find方法。该属性是elem.attr("model-id")
.
我试过这样:
boolSettingsParent.find(`#modal-bool-show [model-id='{elem.attr(model-id)}']`)
但我没有得到任何价值。我怎样才能达到预期的效果?
解决方案
删除空格:
boolSettingsParent.find(`#modal-bool-show[model-id='{elem.attr(model-id)}']`)
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^
空格表示您正在寻找具有该属性的后代元素。#modal-bool-show
没有空格,这意味着您只想要#modal-bool-show
它也具有该属性值。
你提到了一个类,但没有显示选择一个。为此,您需要添加一个类选择器:
boolSettingsParent.find(`#modal-bool-show[model-id='{elem.attr(model-id)}'].some-class`)
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^
但是id
,除非您想跳过没有该属性和/或类的元素,否则只需应该就足够了,因为您在 DOM 中不能有多个具有相同元素的元素id
- 这样做是无效的。因此,如果您希望选择器不匹配任何内容(如果具有该元素的元素id
没有属性和/或类),则向选择器添加更多内容是可以的,但如果您这样做,则选择器匹配“正确”元素有了这个id
,这是一个问题,因为这意味着你有多个相同的元素id
。
我在上面假设您正在使用一些{...}
为您处理的模板系统,但如果您打算在 JavaScript 的模板文字中使用替换,它们使用格式${...}
,而不是{...}
. 所以:
boolSettingsParent.find(`#modal-bool-show[model-id='${elem.attr(model-id)}'].some-class`)
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^
推荐阅读
- azure - 无法使用 SSIS 将文件上传到 Azure 存储
- python-3.x - 通过 Networkx 中的属性值将颜色设置为节点组
- mongodb - 如何使用 ansible 设置 mongodb 副本集
- angular - 检查数组值并更改输入 isCheck(函数)
- php - Laravel 8 - 一对多关系总数不起作用
- ckeditor - CKEditor 5 - 在提及中使用 HTML
- c++ - 具有自定义类型和比较器的 C++ 优先级队列不起作用
- python - 从表中提取特定的href
- javascript - React.js 中的相对导入
- python - 如何在 CSV 文件中显示嵌套字典