Javascript 尝试替换字符串中的最后一个字符,而不是重复的字符串
这是一个JSBin: 当您打开DIV(自定义或个性化)时,函数将按其应该的方式运行,截断“+”并替换为“-”符号,但是当用户关闭DIV时,字符串将被复制并放入 我希望结尾与开头的动作相同(截断并替换最后一个字符) 代码如下: HTML:Javascript 尝试替换字符串中的最后一个字符,而不是重复的字符串,javascript,jquery,Javascript,Jquery,这是一个JSBin: 当您打开DIV(自定义或个性化)时,函数将按其应该的方式运行,截断“+”并替换为“-”符号,但是当用户关闭DIV时,字符串将被复制并放入 我希望结尾与开头的动作相同(截断并替换最后一个字符) 代码如下: HTML: 这似乎具有您描述的效果: function toggle_expand(id){ var e = document.getElementById(id); var text = $(e).siblings("span").text();
这似乎具有您描述的效果:
function toggle_expand(id){
var e = document.getElementById(id);
var text = $(e).siblings("span").text();
if( $(e).css('display') === 'none' ){
$(e).slideToggle('fast', function(){
var newText = $(e).siblings().text( text.slice(0, -1)+"-" );
});
} else {
$(e).slideToggle('fast', function(){
text = $(e).siblings("span").text( text.slice(0, -1)+"+" );
});
}
}
您的
同级
选择器缺乏特定性。有趣的是,
错误地添加了相同的文本,但当显示下拉div时,它最初会被遮挡
function toggle_expand(id) {
var e = document.getElementById(id);
var $title = $(e).siblings(".smallTitle");
var text = $title.text();
请参阅函数其余部分中的
$title
而不是$(e).兄弟姐妹(“span”)
。关于littleregex
love:
function toggle_expand(id){
var e = document.getElementById(id);
var text = $(e).siblings("span").text();
if( $(e).css('display') === 'none' ){
$(e).slideToggle('fast', function(){
var newText = $(e).siblings().text( text.replace(/\+/,'-'));
});
} else {
$(e).slideToggle('fast', function(){
text = $(e).siblings("span").text( text.replace(/-/,'+'));
});
}
}
发生这种情况的原因是,有一个空文本节点也是同级节点,因此您最终将字符串设置为2个元素,然后设置为4个,…这非常有效!非常感谢。因此,我可以更好地理解发生了什么,哪个元素包含空文本节点?#customizePort有两个兄弟节点,一个span和一个br(正如下面所指出的@Explosion Pills,而不是文本节点)是有意义的!非常感谢!我在发布这篇文章的时候正在阅读正则表达式,有点搞砸了。我不完全理解其中的语法!如果你能解释为什么需要所有的前/后斜杠,我可能会使用它,因为它读起来更好。第一个和最后一个/是定义
regex
的**是转义+
(前面的-
是多余的,我已经删除了它)。您可以在此处阅读有关JS正则表达式的更多信息:
function toggle_expand(id) {
var e = document.getElementById(id);
var $title = $(e).siblings(".smallTitle");
var text = $title.text();
function toggle_expand(id){
var e = document.getElementById(id);
var text = $(e).siblings("span").text();
if( $(e).css('display') === 'none' ){
$(e).slideToggle('fast', function(){
var newText = $(e).siblings().text( text.replace(/\+/,'-'));
});
} else {
$(e).slideToggle('fast', function(){
text = $(e).siblings("span").text( text.replace(/-/,'+'));
});
}
}