JQuery:查找其类包含变量值的元素

eve*_*eve 3 javascript jquery

我现在搜索高低,但我无法弄清楚如何让它工作:

我需要获取其类名包含我用变量传递的数字的元素.

为了更好地理解:这是在图库中的"点击"事件内.每当单击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");

            }
    }
Run Code Online (Sandbox Code Playgroud)

但是,我希望它得到变量n所包含的数字,而不是"3".我尝试了这个,但它不起作用:

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

实际上它不适用于我试图传递的任何变量.我也看到并尝试过使用contains()或hasClass()等的示例..但对我来说没什么用.我对语法并不十分熟悉.

我怎么写这个,所以它把变量作为一个字符串?

如果我发出警报(n)它会显示正确的数字,所以这不是问题所在.

T.J*_*der 6

您使用字符串连接处于正确的轨道上,您只是没有完全在字符串之外:

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

在你的尝试中,+ n +仍然在外部引号中,因此在选择器中逐字地使用(使其失败).


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


您可能还希望在找到索引后结束循环,方法是break;在设置红色线后放置线.


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