繁体   English   中英

使用jQuery选择器和JavaScript正则表达式更改字符串

[英]Change a string using jquery selector and javascript regex

我要做的就是在某个类中将所有s中的字母“ y”替换为字母“ i”。 我不确定为什么我的脚本不起作用。 我知道选择器正在工作,因为我可以将方法交换到诸如hide()之类的方法上并且可以工作。 我还可以将replace()的值分配给一个变量,并且该变量显示正确的替换。 所以我很困惑为什么两者不能结合使用...

<script type="text/javascript" src=".../jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
    $("span.certain_class").text().replace(/y/g, "i");
}
);
</script>';

编辑:我需要澄清一下,我需要对整个页面的多个范围执行此操作。 请记住,text()方法会堆叠每个跨度的所有文本...因此,这样的操作将不起作用:

$("span.certain_class").text($("span.certain_class").text().replace(...))

每个跨度最终都会导致其他跨度文本混乱不堪。

$(document).ready(function() {
    $('span.certain_class').each(function() {
        $(this).text($(this).text().replace(/y/ig, function(s) {
            return (s === 'Y' ? 'I' : 'i');
        }));
    });
});

第一行有错字!

<script type="text/javascript" src=".../jquery.min.js"></script>

应该

<script type="text/javascript" src="../jquery.min.js"></script>

工作演示!

或者如果您想直接将其更改为相同的跨度,请使用

    $("span.certain_class").text($("span.certain_class").text().replace(/y/g, "i")); 

http://sandbox.phpcode.eu/g/ab47c/2

  $("span.certain_class").text(
    $("span.certain_class").text().replace(/y/g, "i")
  );

您的脚本确实将所有的“ y”替换为“ i”,但是没有将值分配回dom元素。

text()函数仅获取内容。 但是,使用您当前的代码,您不会替换其内容。

var replacement = $("span.certain_class").text().replace(/y/g, "i");
$("span.certain_class").text(replacement);

好吧,您的解决方案有效,但是您什么都不做。 您要替换div中的文本吗? 尝试这个:

$(document).ready(function() {
        var elm = $("span.certain_class");
        var text = elm.text().replace(/y/g, "i"); // Get current text and replace y to i
        elm.text(text); // Set new text
    }
);

不带参数调用的text()仅返回元素的内部文本,并且由于字符串在Javascript中是不可变的,因此您对replace()调用将创建一个立即被忘记的新字符串。

您可以将一个函数传递给text() ,以便从上一个构建新值:

$("span.certain_class").text(function(index, currentText) {
    return currentText.replace(/y/g, "i");
});

它应该是:

var replaceSpan = $("span.certain_class")
replaceSpan.text(replaceSpan.text().replace(/y/g, "i"));

您需要将字符串传递给.text()方法。 您当前要做的只是将span.certain_class的文本作为字符串( .text() )进行,执行replace( .replace(..) ),但是随后对所得字符串不做任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM