jquery - 通过数据属性选择元素

标签 jquery

希望使用 JSON 更新一些 HTML,并且不想要像 Handlebars 等完整的模板引擎。我以为我只是分配一个数据值并进行迭代,但我收到了错误。引用https://api.jqueryui.com/data-selector/但是,也许不适用于 jQuery 3?如何选择具有 data 属性的元素?

旁注。虽然不是我的问题,但我的最终目标是使用一个对象更新 HTML,该对象包含的名称/值等于我在下面列出的数据属性的值。如果有更好的方法请评论。谢谢

<table class='table' id="default-template">
    <tr><td>Server IP</td><td data-name="server"></td></tr>
    <tr><td>Server Port</td><td data-name="port"></td></tr>
    <tr><td>Reconnect Timeout (seconds)</td><td data-name="reconnectTimeout"></td></tr>
    <tr><td>Response Timeout (seconds)</td><td data-name="responseTimeout"></td></tr>
    <tr><td>Verbose Log</td><td data-name="verboseLog"></td></tr>
    <tr><td>Device Static IP</td><td data-name="ip_address"></td></tr>
    <tr><td>Router IP</td><td data-name="router_ip"></td></tr>
    <tr><td>Domain Name Server IP</td><td data-name="domain_name_server_ip"></td></tr>
</table>
$('#default-template').find('td:data(name)').each(function(i){
    console.log(i,this);
});

display.js:20 {ip_address: "10.120.11.30/24", router_ip: "10.120.11.1", domain_name_server_ip: "10.120.11.1", server: "12.34.56.78", port: "1337", …}
jquery-3.2.1.js:1580 Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: data
at Function.Sizzle.error (jquery-3.2.1.js:1580)
at PSEUDO (jquery-3.2.1.js:1927)
at matcherFromTokens (jquery-3.2.1.js:2476)
at Sizzle.compile (jquery-3.2.1.js:2630)
at Sizzle.select (jquery-3.2.1.js:2716)
at Function.Sizzle [as find] (jquery-3.2.1.js:884)
at jQuery.fn.init.find (jquery-3.2.1.js:2922)
at Object.success (display.js:21)
at fire (jquery-3.2.1.js:3317)
at Object.fireWith [as resolveWith] (jquery-3.2.1.js:3447)
Sizzle.error @ jquery-3.2.1.js:1580
PSEUDO @ jquery-3.2.1.js:1927
matcherFromTokens @ jquery-3.2.1.js:2476
Sizzle.compile @ jquery-3.2.1.js:2630
Sizzle.select @ jquery-3.2.1.js:2716
Sizzle @ jquery-3.2.1.js:884
find @ jquery-3.2.1.js:2922
success @ display.js:21
fire @ jquery-3.2.1.js:3317
fireWith @ jquery-3.2.1.js:3447
done @ jquery-3.2.1.js:9272
(anonymous) @ jquery-3.2.1.js:9514
XMLHttpRequest.send (async)
send @ jquery-3.2.1.js:9566
ajax @ jquery-3.2.1.js:9173
(anonymous) @ display.js:16
dispatch @ jquery-3.2.1.js:5206
elemData.handle @ jquery-3.2.1.js:5014

最佳答案

只需将其更改为:

$('#default-template td[data-name]').each(function(i){
    console.log(i,this);
});

这就是所需要的。

关于jquery - 通过数据属性选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47676180/

相关文章:

javascript - 禁用过去的时间

javascript - 关闭 jQuery 模态框

javascript - HTML5 本地存储回退解决方案

jQuery UI datepicker - 当主字段被清除时清除 altField

javascript - Ajax 请求发送回整个页面,而不是我在 Response.Write 中发送的文本

javascript - 在本地文件上使用 Javascript/jQuery 时权限被拒绝

javascript - 是否有一个 xmpp 客户端可以在页面刷新时保持聊天?

jquery - 如何使用 jquery validate 和 Chosen 验证多选?

文档就绪时触发 jQuery 事件

javascript - HTML5 : how do I disable all links after any one of them are clicked?