单击更改文本而不丢失原始文本 CSS
Change text on click without losing original CSS
我是 Jquery 和 Javascript 的新手,在单击 "like" 按钮后将其更改为 "liked" 时遇到了一些问题。
我已经设法更改了按钮的颜色和单击时的内容,但是当我添加一个 if/else 语句以将它更改为喜欢时,它会删除 span 字形图标以及css 特征。喜欢会变成喜欢,但会删除字形、边框半径、边框宽度、按钮高度等。
我查看了 Stack Overflows 上关于点击更改文本的其他帖子,但我找不到关于此类问题的任何内容。
感谢您的帮助!
$(function() {
$('#object_heart').click( function(){
$(this).find('span').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('border-color', '#8b35ee');
});
});
.object_social {
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social:visited {
border-color: #d0d0d0;
backround: none;
outline: none;
}
.object_social:focus {
outline: none;
}
.object_social:hover {
border-color: #a2a2a2;
}
.object_social:hover .icon-Heart {
transition: 0.7s;
color: #ae68ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social">
<span class="icon-Heart"></span>
Like
</button>
$(function() {
$('#object_heart').click(function() {
var $this = $(this);
if ($this.find('span:last-of-type').html() === 'Like') {
$this.css('color', '#8b35ee').css('border-color', '#8b35ee').find('span:first-of-type').css('color', '#8b35ee');
$this.find('span:last-of-type').html('Liked')
} else {
$this.css('color', '#888888').css('border-color', '#d0d0d0').find('span:first-of-type').css('color', '#888888');
$this.find('span:last-of-type').html('Like')
}
});
});
.object_social {
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social:visited {
border-color: #d0d0d0;
background: none;
outline: none;
}
.object_social:focus {
outline: none;
}
.object_social:hover {
border-color: #a2a2a2;
}
.object_social:hover .icon-Heart {
transition: 0.7s;
color: #ae68ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social">
<span class="icon-Heart"></span>
<span>Like</span>
</button>
这一切都可以简化为单个class切换,其余由CSS处理:
$(function() {
$('#object_heart').click(function() {
$(this).toggleClass('liked');
});
});
.object_social {
cursor: pointer;
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social.liked span {
color: red;
}
.object_social .liked-text {
display: none;
}
.object_social.liked .liked-text {
display: inline;
}
.object_social.liked .like-text {
display: none;
}
.object_social .icon-Heart {
display: none;
}
.object_social.liked .icon-Heart {
display: inline;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social"> <span class="icon-Heart">x</span>
<span class="like-text">Like</span>
<span class="liked-text">Liked</span>
</button>
显然我没有包含您想要的所有更改,但您明白了。用一堆 jQuery 语句来操作 CSS 很麻烦而且难以维护。想象一下,例如,如果您想在整个站点范围内更改按钮的颜色。
看看这是否对您有帮助:
$(function() {
$('#object_heart').click( function(){
$(this).find('span').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('border-color', '#8b35ee');
if($(this).html() === " Like"){
$(this).html(" Liked");
} else {
$(this).html(" Like");
}
});
});
这是 jsFiddle:
我是 Jquery 和 Javascript 的新手,在单击 "like" 按钮后将其更改为 "liked" 时遇到了一些问题。
我已经设法更改了按钮的颜色和单击时的内容,但是当我添加一个 if/else 语句以将它更改为喜欢时,它会删除 span 字形图标以及css 特征。喜欢会变成喜欢,但会删除字形、边框半径、边框宽度、按钮高度等。
我查看了 Stack Overflows 上关于点击更改文本的其他帖子,但我找不到关于此类问题的任何内容。
感谢您的帮助!
$(function() {
$('#object_heart').click( function(){
$(this).find('span').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('border-color', '#8b35ee');
});
});
.object_social {
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social:visited {
border-color: #d0d0d0;
backround: none;
outline: none;
}
.object_social:focus {
outline: none;
}
.object_social:hover {
border-color: #a2a2a2;
}
.object_social:hover .icon-Heart {
transition: 0.7s;
color: #ae68ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social">
<span class="icon-Heart"></span>
Like
</button>
$(function() {
$('#object_heart').click(function() {
var $this = $(this);
if ($this.find('span:last-of-type').html() === 'Like') {
$this.css('color', '#8b35ee').css('border-color', '#8b35ee').find('span:first-of-type').css('color', '#8b35ee');
$this.find('span:last-of-type').html('Liked')
} else {
$this.css('color', '#888888').css('border-color', '#d0d0d0').find('span:first-of-type').css('color', '#888888');
$this.find('span:last-of-type').html('Like')
}
});
});
.object_social {
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social:visited {
border-color: #d0d0d0;
background: none;
outline: none;
}
.object_social:focus {
outline: none;
}
.object_social:hover {
border-color: #a2a2a2;
}
.object_social:hover .icon-Heart {
transition: 0.7s;
color: #ae68ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social">
<span class="icon-Heart"></span>
<span>Like</span>
</button>
这一切都可以简化为单个class切换,其余由CSS处理:
$(function() {
$('#object_heart').click(function() {
$(this).toggleClass('liked');
});
});
.object_social {
cursor: pointer;
display: inline-block;
position: relative;
left: 0;
border-color: #d0d0d0;
border-style: solid;
border-width: thin;
border-radius: 5px;
min-height: 28px;
max-height: 28px;
vertical-align: middle;
color: #888888;
}
.object_social.liked span {
color: red;
}
.object_social .liked-text {
display: none;
}
.object_social.liked .liked-text {
display: inline;
}
.object_social.liked .like-text {
display: none;
}
.object_social .icon-Heart {
display: none;
}
.object_social.liked .icon-Heart {
display: inline;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="object_heart" class="object_social"> <span class="icon-Heart">x</span>
<span class="like-text">Like</span>
<span class="liked-text">Liked</span>
</button>
显然我没有包含您想要的所有更改,但您明白了。用一堆 jQuery 语句来操作 CSS 很麻烦而且难以维护。想象一下,例如,如果您想在整个站点范围内更改按钮的颜色。
看看这是否对您有帮助:
$(function() {
$('#object_heart').click( function(){
$(this).find('span').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('color', '#8b35ee');
$('#social_buttons').find('#object_heart').css('border-color', '#8b35ee');
if($(this).html() === " Like"){
$(this).html(" Liked");
} else {
$(this).html(" Like");
}
});
});
这是 jsFiddle: