この質問は恥ずかしくて不満でした。私は "y"を取り除き、 "i"で置き換えるかなり単純なスクリプトでなければならないものを書いています。これが起こると、新しい "i"にクラスを追加して、元に戻すことができます。何らかの理由で、最初の交換作業...スイッチバックの動作...それは再び動作...その後停止します。私は他に何をすべきかわからないが、全体の醜いスクリプトを投稿するだけである。jquery regex replace()は2回しか実行されません...
偽の正規表現(Mohawkの作成に使用されることがある特定の「y」のみを対象としています)を心配しないでください。
EDIT:ここjfiddleのライブバージョンです:それはあなたが削除した後に反復処理するには、noスパン$(「span.mohawk_word」)を持っていないので、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 ");'をx = x.replace(/ i/g、 "y");などに変更します - サンプルコードも大きすぎます。 – Halcyon