【问题标题】:JQuery: find element whose class contains value of variable [duplicate]JQuery:查找其类包含变量值的元素[重复]
【发布时间】:2015-07-12 12:47:59
【问题描述】:

我现在到处搜索,但我不知道如何让它工作:

我需要获取类名中包含我通过变量传递的数字的元素。

为了更好地理解:这是在画廊的“点击”事件中。每当单击 img 时,我都会搜索 src,查看字符串包含的数字,然后想要找到其类包含相同数字的匹配 p。所以我可以将匹配的文本操作到当前显示的图片(因为我使用的插件去掉了任何 id 或类,我只能通过源名称来识别图片)。

到目前为止,如果我直接将数字作为字符串输入,它确实有效。像这样:

var team_t = $(this).find("img").attr("src");

    for(n = 1; n <=6; n++ ){

            if(team_t.indexOf(n) != -1)
            {   
                $('#text_content').find("p[class*='3']").css("background-color", "red");

            }
    }

但不是“3”,而是我希望它得到变量 n 持有的数字。我试过了,但没有用:

$('#text_content').find("p[class*=' + n + ']").css("background-color", "red");

实际上,它不适用于我尝试传递的任何类型的变量。我还看到并尝试了使用 contains() 或 hasClass() 等的示例。但对我没有任何帮助。不过我对语法不是很熟悉。

我该如何写才能将变量作为字符串?

如果我执行 alert(n),它会显示正确的数字,所以这不是问题。

【问题讨论】:

  • 天哪。一个问题清楚地列出了问题并显示了解决问题的尝试。我……几乎不知道该怎么办。 :-)(是的,伙计们,这是一个简单的问题,但它被正确地问到了,这带来了令人耳目一新的变化。)

标签: javascript jquery


【解决方案1】:

你在字符串连接的正确轨道上,你只是没有完全脱离字符串:

$('#text_content').find("p[class*='" + n + "']").css("background-color", "red");
// Change is here -----------------^- and -^

在您的尝试中,+ n + 仍在外引号中,因此在选择器中按字面意思使用(使其失败)。


也就是说,如果您对 DOM 结构有任何控制权(但听起来您可能没有),那么可能有更好的方法。例如,您可以在元素上放置一个data-*属性,为p元素提供适当的选择器(甚至可能在987654325 @,但只有一个选项)。


您可能还想在找到索引后结束循环,方法是将break; 放在设置红色的行之后。


最后:您可能希望使用一个类来添加红色,而不是将您的演示文稿混合到您的 JavaScript 代码中。

【讨论】:

  • 哇,真快;)。太感谢了!那行得通。我知道这只是我错过的一些小事。我之前尝试过,但我认为我使用了错误的引号。对于休息和课程/insted css:我现在合并了,感谢您的建议!
  • 我不确定我是否完全理解了您写的其他内容。但我猜你的意思是用它作为一种更简单的方法来查找匹配而不是扫描 img 的 src 以查找字符串?我想我可以将一个数据属性放到包含刚刚单击的 img 的 div 中,如果你是这个意思的话。但我不知道如何将它与某个 p 元素相匹配,因为所有 p 都有不同的 id,但数据 attr 总是包含相同的东西?!如果这就是你的意思,也许你可以澄清一下。谢谢! =)
猜你喜欢
  • 2014-10-12
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2011-09-24
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多