【问题标题】:Attach an image to any word将图像附加到任何单词
【发布时间】:2012-03-25 02:33:54
【问题描述】:

我想将图像附加到特定的单词,但找不到合适的 CSS 选择器。

我的网站有一部分显示从数据库中提取的数据,因此向某些单词添加类或 ID 对我来说不是一个选项。 我需要 CSS 来简单地在页面上找到该单词(或在本例中为名称)的任何位置显示背景图像。

例如,在以下(从数据库中提取):

<td class="data1"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Patrick</font></td>

我想在找到名称Patrick 的位置添加背景图像。

我尝试了,

td[.table1 *='Parick'] { 
    background-image:url(../images/accept.png);

但这并没有让我有所收获。而且由于它不在&lt;span&gt;&lt;div&gt; 甚至链接中,我无法弄清楚。如果您有任何想法或 jQuery 解决方法,请告诉我。谢谢!

【问题讨论】:

  • 我认为这可能是真的。谢谢。

标签: css jquery-selectors css-selectors


【解决方案1】:

如果你能保证名称只作为元素中唯一的文本节点出现,你可以使用一个简单的 jQuery 选择器...

$(':contains("Patrick")').addClass('name');

jsFiddle.

如果周围可能有空格和/或搜索不区分大小写,请尝试...

$('*').filter(function() {
    return $.trim($(this).text()).toLowerCase() == 'patrick';
}).addClass('name');

jsFiddle.

如果您需要在任何文本节点中的任何位置找到名称,然后需要用元素包装它,请尝试...

$('*').contents().filter(function() {
    return this.nodeType == 3;
}).each(function() {
    var node = this;
    this.data.replace(/\bPatrick\b/i, function(all, offset) {
        var chunk = node.splitText(offset);
        chunk.data = chunk.data.substr(all.length);
        var span = $('<span />', {
            'class': 'name',
            text: all
        });
        $(node).after(span);
    });
});​

jsFiddle.

我建议使用第三个示例。

【讨论】:

  • 嗯。 $(':contains("Patrick")').addClass('name'); 有效,但由于找到了名称,因此将图像添加到了整个页面。我需要使其特定于单词本身,因此每次找到该单词时,css都会将图像添加到该单词的左侧。我试过了,$('td:contains("Patrick")').addClass('name');,只是把它放在整个桌子外面。我对应的 CSS 是:.name { background-image:url(../images/accept.png); background-repeat:no-repeat; background-position:left;
  • @Toasterdroid 试试最后一个例子,它在我的小提琴中很完美:)
  • 太酷了。好吧,我一定是把脚本放错地方了。我会修改它,直到我让它像你的 jsFiddle 示例一样工作。非常感谢!
  • :contains() 曾经存在于 CSS 中,但被丢弃了,呸,我只是指出这一点:stackoverflow.com/questions/4781141/… 它被丢弃的主要原因之一是因为像这样的灾难由@Toasterdroid 描述:如果您单独使用伪类而不使用任何其他选择器,它将将该类添加到该&lt;font&gt; 元素及其每个祖先,一直回到&lt;html&gt; 元素!
  • 如果那个&lt;font&gt;标签会在那里,你也可以使用font:contains("Patrick")并寻找合适的元素来添加类(如果不是那个标签)。
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2011-06-05
  • 2011-03-17
  • 2017-04-11
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多