我對這個問題感到慚愧和沮喪。我正在寫什麼應該是一個非常簡單的腳本,刪除「Y」並用「我」替換它們。發生這種情況時,我將一個類添加到新的「我」,以便我可以撤消它。出於某種原因,第一個替換工作...切換回工作...它再次工作...然後停止。我不知道還有什麼要做,但只是發佈整個醜陋的腳本。jquery正則表達式替換()只運行兩次...然後不
不要擔心粗糙的正則表達式(它只針對某些有時用於寫作莫霍克族的「y」)。
編輯:這裏有jfiddle真人版:http://jsfiddle.net/vkVBk/
$(document).ready(
function() {
function swap_out_y(x) {
//alert(x);
x = x.replace(/y/, "i");
x = x.replace(/Y/, "I");
alert('swap_out_y just ran. x = '+x);
return x;
}
function swap_out_i(x) {
//alert(x);
x = x.replace(/i/, "y");
x = x.replace(/I/, "Y");
alert('swap_out_i just ran. x = '+x);
return x;
}
$('body').delegate('.y_to_i', 'click', y_to_i);
//$('body').delegate('.i_to_y', 'click', i_to_y);
function y_to_i() {
$("span.mohawk_word").each(
function() {
$(this).html(
$(this).text().replace(/(y[aevu])|(y[oe]n)/ig, function(s) {
return '<span class="consonant">'+swap_out_y(s)+'</span>';
})
);
}
);
$('.y_to_i').undelegate('click');
$('.y_to_i').addClass('i_to_y');
$('.y_to_i').removeClass('y_to_i');
$('body').delegate('.i_to_y', 'click', i_to_y);
//alert('A');
} //end y_to_i
function i_to_y(){
$("span.consonant").each(
function() {
$(this).html($(this).text().replace(/i/ig,
function(s) {
return swap_out_i(s);
}
)//replace...
);//html
//$(this).removeClass('replacement_i');
}//function(){
);//each(
$('.i_to_y').undelegate('click');
$('.i_to_y').addClass('y_to_i');
$('.i_to_y').removeClass('i_to_y');
$('body').delegate('.y_to_i', 'click', y_to_i);
}
} //function
); //document ready
不是你的問題,但是你想在所有正則表達式的末尾添加'g'標誌,否則它們只會替換第一個實例。 – Ryan
你能用http://jsfiddle.net/提供一個實例嗎? –
更改'x = x.replace(/ i /,「y」);'to'x = x.replace(/ i/g,「y」);'等等 - 你樣本代碼太大了。 – Halcyon