在下面的方法中,我可以用文本foo的一个bar类搜索div,并在其中包含的文字加下划线:
function UnderlineText() {
$(".bar").filter(":contains(foo)").css("text-decoration", "underline");
}
但我想将一个参数传递给该方法,而不是包含字符串foo。
我已尝试过各种排列,如前一个关于弃用的.contains
但我无法让它发挥作用。
实现这一目标的最佳方法是什么?
function UnderlineText(searchText) {
$(".bar").filter(":contains(*searchText*)").css("text-decoration", "underline");
}
答案 0 :(得分:4)
function UnderlineText(searchText) {
$(".bar").filter(":contains("+searchText+")").css("text-decoration", "underline");
}
可以解决问题。
答案 1 :(得分:0)
即使你设法让选择器工作,你也会选择整个包含元素(p,span,div等),所以使用简单的css()
调用最终会强调整个文本块。要强调特定部分,您必须使用以下内容:
function underline(query) {
$('.bar').filter(':contains("' + query+ '")').each(function() {
var html = $(this).html();
html = html.replace(query, '<span style="text-decoration: underline">' + query + '</span>';
$(this).html(html);
});
}
这仍然不是那么好,因为它可能会在属性或某些内容中替换查询,但它是向单独强调内容的一步。