This question already has answers here:
jQuery Attribute selector with a period
                                
                                    (4个答案)
                                
                        
                2年前关闭。
            
        

我想在列表中添加或删除li。为此,我发现需要添加数据属性并找到具有该值的项目。

if ($('li[data-requestId=' + requestId + ']').length == 0)
{
    var element = getRequestElement();
    var li = document.createElement("li");
    li.setAttribute("data-requestId",requestId);
    li.appendChild(element);
    $('#requestsUL').append(li);
}


但第一行给出此错误:


  语法错误,无法识别的表达式:
  li [data-requestId = 6.22.20]

最佳答案

您好,这里是一种允许您基于ul读取data-requestId标记内的所有元素的方法。

我用一个变量将li[data-requestId=""]requestId连接起来:

var dataSelector='li[data-requestId="' + requestId + '"]';


通过这种方式,upi确保选择器完全是string,因此在逻辑上将起作用。最后,这里是一个代码片段,演示了我所说的所有内容:


$(function(){

var liSize=$("ul").children().length;

for(var requestId=1;requestId<=liSize;requestId++)
{
var dataSelector='li[data-requestId="' + requestId + '"]';
console.log($(dataSelector).text());
}
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li data-requestId=1>Item 1 </li>
  <li data-requestId=2>Item 2 </li>
  <li data-requestId=3>Item 3 </li>
  <li data-requestId=4></li>
</ul>

10-06 11:32