包含HTML的变量的jQuery选择器

时间:2016-04-14 12:39:18

标签: javascript jquery

我正在尝试选择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 ['data-matching']。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

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

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

关于处理mutliple行,你的字符串语法也是错误的。 deposti_rowdeposit_row不同。

这使得许多事情变得错误,因此发布的代码很少......

答案 1 :(得分:1)

另一种方式: -

  1. 使用has创建多行字符串。
  2. 由于没有root,请查看每个内部的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); });
  3. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    var auth = function(req, res, next){
       if (!req.isAuthenticated())
        res.send(401);
         else next();
       };
    

答案 2 :(得分:0)

您需要从属性选择器中删除单引号,然后它应该工作为长锚标记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(){
});