Jquery字符串替换€



我使用这个Jquery代码来隐藏页面上的€符号。

(function($){
jQuery(document).ready(function() {
jQuery(".amount:contains('€')").html(function(_, html) {
return html.replace(/(€ )/g, '');
});
});
})(jQuery);

但由于某种原因,我无法让它在WordPress中工作。我知道它必须在文档准备功能中,因为没有冲突模式。这就是我所做的。

这段代码与我在同一页面上加载的其他脚本使用的js文件相同;

(function($){
jQuery(document).ready(function() {
jQuery(".amount:contains('€')").html(function(_, html) {
return html.replace(/(€ )/g, '');
});
});
})(jQuery);
(function($){
jQuery(document).ready(function(){
console.log("ready to use!");
if(jQuery('.single-product').length > 0) {
var _sfm_brand = '';
var _sfm_model = '';
var _sfm_generation = '';
var _sfm_engine = '';
var _sfm_engine_ecu = '';       

function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++){
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
_sfm_brand = getUrlVars()["_sfm_brand"];
_sfm_model = getUrlVars()["_sfm_model"];
_sfm_generation = getUrlVars()["_sfm_generation"];
_sfm_engine = getUrlVars()["_sfm_engine"];
_sfm_engine_ecu = getUrlVars()["_sfm_engine_ecu"];



if(typeof _sfm_brand !== "undefined" && _sfm_brand != "") {
jQuery('input[name="tmcp_textfield_0"]').val(decodeURIComponent(_sfm_brand));
jQuery('input[name="tmcp_textfield_0"]').prop('readonly',true);
} else {
jQuery('input[name="tmcp_textfield_0"]').val('');

}


if(typeof _sfm_model !== "undefined" && _sfm_model != "") {
jQuery('input[name="tmcp_textfield_1"]').val(decodeURIComponent(_sfm_model));
jQuery('input[name="tmcp_textfield_1"]').prop('readonly',true);
} else {
jQuery('input[name="tmcp_textfield_1"]').val(decodeURIComponent(""));

}


if(typeof _sfm_generation !== "undefined" && _sfm_generation != "") {
jQuery('input[name="tmcp_textfield_2"]').val(decodeURIComponent(_sfm_generation));
jQuery('input[name="tmcp_textfield_2"]').prop('readonly',true);
} else {
jQuery('input[name="tmcp_textfield_2"]').val(decodeURIComponent(""));

}


if(typeof _sfm_engine !== "undefined" && _sfm_engine != "") {
jQuery('input[name="tmcp_textfield_3"]').val(decodeURIComponent(_sfm_engine));
jQuery('input[name="tmcp_textfield_3"]').prop('readonly',true);

} else {
jQuery('input[name="tmcp_textfield_3"]').val(decodeURIComponent(""));

}


if(typeof _sfm_engine_ecu !== "undefined" && _sfm_engine_ecu != "") {
jQuery('input[name="tmcp_textfield_4"]').val(decodeURIComponent(_sfm_engine_ecu));
jQuery('input[name="tmcp_textfield_4"]').prop('readonly',true);

} else {
jQuery('input[name="tmcp_textfield_4"]').val(decodeURIComponent(""));

}
}       
}); 
})(jQuery);

这个代码运行得很好。所以我确信文件已加载。

此外,奇怪的是,当通过url加载js文件时,我得到的是这样的:

(function($){
jQuery(document).ready(function() {
jQuery(".amount:contains('€')").html(function(_, html) {
return html.replace(/(€&nbsp;)/g, '');
});
});
})(jQuery);

我还试着用欧元和u20ac来更改欧元符号,但它们也不起作用。有谁能帮我吗?

谢谢:(

编辑:在Jsfidle中,它正在工作。我还准备好了其他一些文章,但运气不好。所以这就是我发布自己的原因。

Wordpress加载了大量javascript和php函数,因此其中一个主题可能会被覆盖或与您的代码冲突。

如果你想要隐藏€字符,最好将其添加到主题的功能中。hp:

function replace_text($text) {
$text = str_replace('€', '', $text);
return $text;
}
add_filter('the_content', 'replace_text');

以防上述方法不起作用。使用这个替代:

jQuery(document).ready(function(){
jQuery('body').hover(function() {
let search = '€';
if(jQuery('.amount:contains('+search+')').html()!=undefined){
var text = 
jQuery('.amount:contains('+search+')').html().replace(search, '');
jQuery('.amount:contains('+search+')').html(text);
}else{
return false;
}

});
});

我也尝试用一个函数更改货币符号。但它并没有得到页面模板;

add_filter( 'woocommerce_currency_symbol', 'change_currency_symbol', 10, 2 );
function change_currency_symbol( $symbols, $currency ) {

if ( is_page_template( 'archive-chiptuning.php' ) && ( 'EUR' === $currency )) {

return '';
}
return $symbols;
}

如果没有is_page_template,它是有效的,但由于我使用不同的产品,使用不同的货币(欧元和信用(,我不能这样使用它。因为它改变了所有的符号。

编辑:检查循环外的页面模板:

add_filter( 'woocommerce_currency_symbol', 'change_currency_symbol', 10, 2 );
function change_currency_symbol( $symbols, $currency ) {

global $template;

if ( basename( $template ) === 'archive-chiptuning.php' && ( 'EUR' === $currency )) {
return '';
}
return $symbols;
}

用途:

global $template;

if ( basename( $template ) === 'archive-chiptuning.php'

感谢这篇帖子:https://wordpress.stackexchange.com/questions/328384/is-page-template-not-working/375028#375028

最新更新