jQuery 用条件包装一些字符串

发布于 2024-12-06 11:00:42 字数 475 浏览 0 评论 0原文

我有字符串需要用标签 HTML 包裹,条件如下:

<h1>Test</h1>

然后什么都不会发生

<h1>Test Lagi</h1>

然后第一个单词将由 span 包裹,结果

;测试 Lagi

<h1>Test Lagi ah</h1>

然后只有第一个单词会被 span 包装,结果:

<h1><span>Test</span> Lagi ah</h1>

在 jQuery 中如何做到这一点?

i have string need to be wrapped by tag HTML with conditional like this:

<h1>Test</h1>

Then nothing will happen

<h1>Test Lagi</h1>

Then the first word will be wrapped by span, result <h1><span>Test</span> Lagi</h1>

<h1>Test Lagi ah</h1>

Then only the first word will be wrapper by span, result:

<h1><span>Test</span> Lagi ah</h1>

How to do that in jQuery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柏拉图鍀咏恒 2024-12-13 11:00:43

这样做: http://jsfiddle.net/RE9rp/1/

是 JS:

function wrapFirstWord($el, word){
    $el.each(function(){
        var txt = $(this).text();
        var wordArray = txt.split(' ');
        if(wordArray[0] === word && wordArray.length > 1){
            var newHTML = '<span>' + word + '</span>';
            for(var i = 1; i < wordArray.length; i++){
                newHTML += ' ' + wordArray[i];
            }
            $(this).html(newHTML);
        }
    });
}

$(function(){
    wrapFirstWord($('h1'),'Test');
});

这 只需将您想要检查单词 ($el) 的元素集以及您要查找的单词传递给 wrapFirstWord() 即可。

This does it: http://jsfiddle.net/RE9rp/1/

And here's the JS:

function wrapFirstWord($el, word){
    $el.each(function(){
        var txt = $(this).text();
        var wordArray = txt.split(' ');
        if(wordArray[0] === word && wordArray.length > 1){
            var newHTML = '<span>' + word + '</span>';
            for(var i = 1; i < wordArray.length; i++){
                newHTML += ' ' + wordArray[i];
            }
            $(this).html(newHTML);
        }
    });
}

$(function(){
    wrapFirstWord($('h1'),'Test');
});

You simply pass to wrapFirstWord() the set of elements you want to check for the word ($el), as well as the word you are looking for.

起风了 2024-12-13 11:00:42

在关注 CoryLarson 的链接后,这是一个更好的解决方案:
http://jsfiddle.net/avmFe/

$(function(){
    $('h1').each(function(){
       var me = $(this);
        if(/(\W+)/.test(me.html())) {
          me.html(me.html().replace(/^(\w+)/, '<span>$1</span>'));
        }
    });
});

希望有帮助。

After following CoryLarson's link Here is a better solution:
http://jsfiddle.net/avmFe/

$(function(){
    $('h1').each(function(){
       var me = $(this);
        if(/(\W+)/.test(me.html())) {
          me.html(me.html().replace(/^(\w+)/, '<span>$1</span>'));
        }
    });
});

Hope it helps.

喜爱皱眉﹌ 2024-12-13 11:00:42
$(function(){
    $('h1').each(function(){
        var txt = $(this).text();
        var wordArray = txt.split(' ');

        var new_first = '<span>'+wordArray[0]+'</span>';
        var new_txt = txt .replace("wordArray[0]",new_first);
        $(this).html(new_txt);

    });
});
$(function(){
    $('h1').each(function(){
        var txt = $(this).text();
        var wordArray = txt.split(' ');

        var new_first = '<span>'+wordArray[0]+'</span>';
        var new_txt = txt .replace("wordArray[0]",new_first);
        $(this).html(new_txt);

    });
});
半城柳色半声笛 2024-12-13 11:00:42

http://jsfiddle.net/Rs4TA/1/

$('*:contains("Test")').html('<span>Test</span>'); 

如果您的“测试”是静态文本,可以用这种方式完成。

http://jsfiddle.net/Rs4TA/1/

$('*:contains("Test")').html('<span>Test</span>'); 

If your "test" is a static text, it could be done by this way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文