这次可能会有效让我们试试......
好吧,这是我的问题,
此代码目前有效:
$(".threadTitle").each(function() {
var colorBackground = "#F7F2ED";
if ($(this).html().indexOf("Abraham") != -1) {
$(this).parent().parent().parent().parent().css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row1").css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row2").css("background", colorBackground);
}
});
这是我正在尝试但不起作用的事情:
var titles = ["Abraham"];
$(".threadTitle").each(function() {
var colorBackground = "#F7F2ED";
var realTitle = $(this).html();
if (titles.indexOf(realTitle) > -1) {
$(this).parent().parent().parent().parent().css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row1").css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row2").css("background", colorBackground);
}
});
var realTitle = $.trim($(this).text());
for (var i = 0; i < titles.length; i++) {
if (realTitle.indexOf(titles[i]) > -1) {
$(this).parent().parent().parent().parent().css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row1").css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row2").css("background", colorBackground);
break;
}
}
var wordsOrPhrases = ["Abraham", "how are you"];
$(".threadTitle").each(function() {
var realTitle = $(this).text();
var asdasdasd = wordsOrPhrases.filter(function(x) {
return realTitle.indexOf(x) > -1;
}).length > 0;
if (asdasdasd) {
$(this).css("background", "#F7F2ED");
}
});
http://jsperf.com/testestringinsidearray
感谢所有帮助过我的人。
答案 0 :(得分:0)
首先,您可能需要$(this).text()
而不是.html()
,以防您有嵌套跨度或其他内容(尽管您不应该)。
但这不应该导致你遇到的问题。你必须在两个例子之间的html中有所不同。
答案 1 :(得分:0)
你的问题仍然没有得到很好的解释,但我认为我有。
你问为什么这会返回true:
if($(this).html().indexOf("Title A") != -1) {
//should get here
}
但这不是:
var titles = ["Title A"];
var realTitle = $(this).html();
if (titles.indexOf(realTitle) > -1) {
//should get here
}
差异与string.indexOf()
和array.indexOf()
之间的差异有关。
string.indexOf()
在字符串中的任何位置搜索指定的文本。
array.indexOf()
在数组中的任何位置搜索指定的对象(不必是字符串)。
编辑从图片中,我可以看到您的跨度包含大量空格。尝试改为:
var realTitle = $.trim($(this).text());
编辑2 以回应您的评论:
在这种情况下,您需要迭代数组并对每个项目执行indexOf
。我想这就是你想要的:
var realTitle = $.trim($(this).text());
for (var i = 0; i < titles.length; i++) {
if (realTitle.indexOf(titles[i]) > -1) {
$(this).parent().parent().parent().parent().css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row1").css("background", colorBackground);
$(this).parent().parent().parent().parent().find(".row2").css("background", colorBackground);
break;
}
}