我想在jquery中创建LIKE和UNLIKE按钮,我做的是,
<span><a class="like-Unlike" href="">Like</a></span> |
function LikeUnLikeButton() {
$(".like-Unlike").click(function (e) {
if ($(this).html() == "Like") {
$(this).html('Unlike');
}
else {
$(this).html('Like');
}
});
}
但它不起作用,问题是当我点击LIKE按钮时我可以看到与按钮不同而且它又回到了LIKE按钮
请在此处查看:http://jsfiddle.net/mHJnH/
答案 0 :(得分:2)
您遗漏了$(this
的右括号。此处缺少
更改强>
$(this.html('Unlike'));
致
$(this).html('Unlike');
由于有问题的更新而进行修改
你可能不需要函数LikeUnLikeButton(){
<强> Live Demo 强>
$(".like-Unlike").click(function(e) {
if ($(this).html() == "Like") {
$(this).html('Unlike');
}
else {
$(this).html('Like');
}
return false;
});
答案 1 :(得分:1)
您的代码中有一些错误
$(this.html('Unlike'));
应该是
$(this).html('Unlike');
的情况相同
$(this.html('Like'));
应该是
$(this).html('Like');
答案 2 :(得分:1)
你快到了!
以下代码有效:
<span><a class="like-Unlike" href="#">Like</a></span>
<script>
function LikeUnLikeButton() {
$(".like-Unlike").click(function (e) {
if ($(this).html() == "Like") {
$(this).html('Unlike');
}
else {
$(this).html('Like');
}
});
}
LikeUnLikeButton();
</script>
答案 3 :(得分:0)
试一试。 http://jsfiddle.net/fedmich/DTAbj/
我建议您缓存$(this),这样会更快。 然后使用$ .data存储它是否喜欢,而不是仅使用.html()来匹配字符串。
$(function() {
$('.like-button').click(function(){
var obj = $(this);
if( obj.data('liked') ){
obj.data('liked', false);
obj.html('Like');
}
else{
obj.data('liked', true);
obj.html('Unlike');
}
});
});
答案 4 :(得分:0)
而不是$(this).html() == "Like"
使用$(this).val() == "Like"
以便访问按钮的值而不是整个html代码。
因此,在更改值时,请使用$(this).val("Like")
或$(this).val("Unlike")
答案 5 :(得分:0)
您应该使用e.preventDetault来阻止锚标记操作。并且您可以使用toggleClass和hasClass来识别而不是比较纯文本。
<ul style="list-style-type:none">
<li class="tick">Active directory management</li>
</ul>
&#13;
$('.action').on('click', function(e){
e.preventDefault();
var anchorLink = $(this);
anchorLink.toggleClass('like');
var text = anchorLink.hasClass('like') ? 'Like' : 'UnLike'
anchorLink.text(text);
})
&#13;