jQuery Pass参数用contains子句过滤语句

时间:2010-02-10 17:23:25

标签: jquery filter

在下面的方法中,我可以用文本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");
}

2 个答案:

答案 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);
  });
}

这仍然不是那么好,因为它可能会在属性或某些内容中替换查询,但它是向单独强调内容的一步。