Javascript jQuery-如果是特定文本,则添加类

Javascript jQuery-如果是特定文本,则添加类,javascript,jquery,css,Javascript,Jquery,Css,我想创建一个jQuery,如果出现某个文本,它将添加一个类 检查我的JSFIDLE: 我已经删除了所有其他句子,以使其始终有效,但如果div中有单词“mener”,我希望添加该类 var sentences = [ 'Jeg mener også at det er paent']; var rand = sentences[Math.floor(Math.random() * sentences.length)]; $(document).ready(function () {

我想创建一个jQuery,如果出现某个文本,它将添加一个类

检查我的JSFIDLE:

我已经删除了所有其他句子,以使其始终有效,但如果div中有单词“mener”,我希望添加该类

var sentences = [
    'Jeg mener også at det er paent'];

var rand = sentences[Math.floor(Math.random() * sentences.length)];

$(document).ready(function () {
    $('#text').text(rand); {
        $("#text:contains('MENER')").addClass("#flaekke");
    }
});

从类名中删除哈希(#)。向包含文本的元素添加类也不需要太多代码

这就是您所需要的:

var sentences = [
    'Jeg mener også at det er paent'];

var rand = sentences[Math.floor(Math.random() * sentences.length)];

$(document).ready(function () {
    $("#text").text(rand);

    $("#text:contains('MENER'), #text:contains('mener')").addClass("flaekke");
});


这应该是可行的。

我对您的代码进行了以下更改以使其正常工作:

  • 在已有的文本中查找字符串,而不是在DOM中(更简单、更快)
  • 从类名中删除
    #
  • 确保你在寻找正确的案例。实际的“mener”文本是小写的,即使您有文本转换以大写显示它
  • 确保你的CSS优先级是正确的。我必须将
    .flaekke
    规则移动到
    #文本
    规则之后,然后添加一个
    !重要信息
    ,以确保所需的
    `。flaekke
    规则在我需要时生效。记住,由ID指定的CSS规则比类具有更高的优先级,因此如果您希望该类具有优先级,则必须修改该规则以实现这一点
  • 似乎您可以在已有的文本中检查单词,而不必查看DOM。此外,您需要从类名中删除#:

    $(document).ready(function () {
        $('#text').text(rand);
        if (rand.indexOf("mener") !== -1) {
            $('#text').addClass("flaekke");
        }
    });
    

    工作演示:

    除了不正确的类名之外,您的具体问题来自文本实际上包含“mener”,而不是“mener”。jQuery:contains区分大小写,不考虑您的大写转换

    以下是一个可行的解决方案:


    正则表达式很有趣,下面是使用它们的答案:


    注:如果你只想添加一个名为
    flaekke
    的类,你不需要id选择器,
    #
    或类选择器,
    ,只需输入你想添加的类的名称,让jquery发挥它的魔力。

    为了完整起见,我创建了一个小提琴,在点击按钮时随机化文本,如果
    mener
    不存在,也会删除该类


    jQuery

    CSS
    注意:您正在添加一个类名中带有#的类,这可能不起作用。
    :contains
    区分大小写(det er forskjell påstore og småbokstaver)语法看起来不正确。
    $('#text')。text(rand);{ <代码> > El Calrr.这仍然有效,因为它会认为它是一个BROCKI并不是说它不能工作,但是它看起来不正确,显然是出了问题。没有工作。尝试删除哈希,并试图添加DoT。没有工作的时间不会链接选择器像第一个匹配<代码> MENER < /代码>,然后尝试匹配<代码> m。ener
    @Münter我更新了fiddle。它添加了类并设置了文本,但在我看来确实很奇怪。这很有效:-)就在你的JSFIDLE中,你忘了自己删除散列:P所以谢谢:D
    $(document).ready(function () {
        $('#text').text(rand);
        $("#text:contains('MENER')").addClass("flaekke");
    });
    
    $(document).ready(function () {
        $('#text').text(rand);
        if (rand.indexOf("mener") !== -1) {
            $('#text').addClass("flaekke");
        }
    });
    
    $(document).ready(function () {
        $('#text').text(rand);
        $("#text:contains('mener')").addClass("flaekke");
    });
    
    var sentences = [
        'Jeg mener også at det er paent'];
    
    var rand = sentences[Math.floor(Math.random() * sentences.length)];
    
    $(document).ready(function () {
        $('#text').text(rand); {
            if(new RegExp("mener").test(rand)){
                $("#text").addClass("flaekke");
            }
        }
    });
    
    var $text = $('#text'),
        sentences = 
        [
            'Jeg mener også at det er paent',
            'Jeg også at det er paent',
            'Jeg mener paent'
        ];
    
    $("#randomize-button").on("click", function ()
    {
        var rand = sentences[Math.floor(Math.random() * sentences.length)];
        
        if (rand.toLowerCase().indexOf('mener') != -1)
            $text.addClass("flaekke");
        else
            $text.removeClass("flaekke");
        
        $text.text(rand);   
    })
    .click();
    
    .flaekke 
    {
        background: black;
        color: white;
    }
    
    #text 
    {
        width: 80%;
        margin: 20px auto;
        padding: 10px;
        font-size: 200%;
        text-align: center;
        z-index: 10;
        text-transform:uppercase;
        border: solid 1px black;
    }