包含HTML的变量上的jQuery选择器

jQuery selector on variable containing HTML

本文关键字:jQuery 选择器 变量 HTML 包含      更新时间:2023-09-26

我正在尝试选择一个html变量中包含的所有锚点,如下所示:我的代码:

var deposti_row = "
<a data-country='uk' data-currency='eur' data-matching='country-currency'> AA </a>
<a data-country='uk' data-currency='eur' data-matching='country'> BB </a>
<a data-country='uk' data-currency='eur' data-matching='none'> CC </a>
"
$("a['data-matching']",$(deposit_row)).each( function(){
console.log(this);
});

但我得到了错误语法错误,无法识别的表达式:a['datamatching']。请帮忙吗?

您的语法错误。无论如何,你真正想要的是过滤匹配集:

$(deposit_row).filter('a[data-matching]').each(...)

在处理多行时,您的字符串语法也是错误的。并且CCD_ 1与CCD_。

发布的代码太少,这让很多事情都错了。。。

这是另一种方法:-

  1. 使用'创建多行字符串
  2. 由于没有根,请在每个根中使用has进行检查

var deposit_row = "'
<a data-country='uk' data-currency='eur' data-matching='country-currency'> AA </a>'
<a data-country='uk' data-currency='eur' data-matching='country'> BB </a>'
<a data-country='uk' data-currency='eur' data-matching='none'> CC </a>'
";
$(deposit_row).each(function() {
  if ($(this).has('[data-matching]'))
    console.log(this);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

您需要从属性选择器中删除单引号,然后它应该像长锚标记a具有父元素一样工作。

您需要将它们封装在div中,以将它们视为后代

deposit_row = $(deposit_row).wrap("<div></div>").html();
$("a[data-matching]",$(deposit_row)).each( function(){
   console.log(this);
});

如果a['data-matching']是根节点的子节点,也可以尝试此操作

$(deposit_row).find("a['data-matching']").each(function(){
});

但由于a是的根节点

$(deposit_row).children("a['data-matching']").each(function(){
});