Jquery 推特引导图标和<;输入类型=";按钮>;
我试着为投票添加两个图标,但我不确定具体怎么做。当前代码只有两个Jquery 推特引导图标和<;输入类型=";按钮>;,jquery,twitter-bootstrap,Jquery,Twitter Bootstrap,我试着为投票添加两个图标,但我不确定具体怎么做。当前代码只有两个,现在需要在它们上面放置图标。这就是我目前尝试的: <div class="btn-votes"> <div class="like"> <i class="icon-like"> <input type="button" title="Up" class="up" onClick="addVote('.$row['image_id'].',
,现在需要在它们上面放置图标。这就是我目前尝试的:
<div class="btn-votes">
<div class="like">
<i class="icon-like">
<input type="button" title="Up" class="up" onClick="addVote('.$row['image_id'].',\'1\')" '.$up.' />
</i>
</div>
<div class="dislike">
<i class="icon-dislike">
<input type="button" title="Down" class="down" onClick="addVote('.$row['image_id'].',\'-1\')" '.$down.' />
</i>
</div>
</div>
更新:当前代码
<div class="btn-votes">
<div class="like">
<button title="Up" class="up" onClick="addVote('.$row['image_id'].',\'1\')" '.$up.' />
<i class="icon-like"> </i>
</button>
</div>
<div class="dislike">
<button title="Down" class="down" onClick="addVote('.$row['image_id'].',\'-1\')" '.$down.' />
<i class="icon-dislike"></i>
</button>
</div>
</div>
首先,addVote()函数不存在,所以将ajax调用包装在其中
function addVote(image_id, vote_rank) {
$.ajax({
url: "add_vote.php",
data:'image_id='+image_id+'&vote_rank='+vote_rank,
type: "POST",
beforeSend: function(){
$('#links-'+image_id+' .btn-votes').html("<img src='loaderIcon.gif' />");
},
success: function(vote_rank_status){
console.log(vote_rank_status);
var votes = parseInt($('#votes-'+image_id).val());
var vote_rank_status;
switch(vote_rank) {
case "1":
votes = votes+1;
break;
case "-1":
votes = votes-1;
break;
}
$('#votes-'+image_id).val(votes);
$('#vote_rank_status-'+image_id).val(vote_rank_status);
var up,down;
if(vote_rank_status == 1) {
up="disabled";
down="enabled";
}
if(vote_rank_status == -1) {
up="enabled";
down="disabled";
}
var vote_button_html = '<div class="like"><i class="icon-like"><input type="button" title="Up" id="up" onClick="addVote('+image_id+',\'1\')" '+up+' /></i></div><div class="label-votes">'+votes+'</div><div class="dislike"><i class="icon-dislike"><input type="button" title="Down" id="down" onClick="addVote('+image_id+',\'-1\')" '+down+' /></i></div>';
$('#links-'+image_id+' .btn-votes ').html(vote_button_html);
}
});
}
当然,您可以在按钮上绑定onclick事件,但是,您应该通过jquery而不是onclick绑定函数,因为onclick将在您的函数范围之外触发:
var vote_button_html = '<div class="like">' +
'<i class="icon-like">' +
'<input type="button" title="Up" id="up" '+up+' />' +
'</i>' +
'</div>' +
'<div class="label-votes">'+votes+'</div>' +
'<div class="dislike">' +
'<i class="icon-dislike">' +
'<input type="button" title="Down" id="down" '+down+' />' +
'</i>' +
'</div>';
var vote_button = $(vote_button_html);
vote_button.find("#up").on("click", function(){
addVote(image_id,1);
});
vote_button.find("#down").on("click", function(){
addVote(image_id,-1);
});
$('#links-'+image_id+' .btn-votes ').empty().append(vote_button);
var投票按钮html=''+
'' +
'' +
'' +
'' +
“+投票数+”+
'' +
'' +
'' +
'' +
'';
var vote_button=$(vote_button_html);
投票按钮。查找(#up”)。在(“单击”,函数()上{
addVote(图像_id,1);
});
投票按钮。查找(#向下”)。在(“单击”,函数()上{
addVote(图像_id,-1);
});
$(“#链接-”+image_id+“.btn投票”).empty().append(投票按钮);
请注意,如果页面上有多个投票按钮,则必须将id从id向上和向下更改为类,因为id必须是唯一的要将图标放入按钮,请使用
按钮
元素,而不是输入类型=“button”
。其次,您的代码中没有定义addVote()
函数,因此出现了错误。感谢您的评论。我添加了当前代码,该代码正在运行,并且没有addVote
。谢谢。我已经更新了我的问题,在你的回答之后我是如何提出这些问题的。但还是一样。我有函数addVote(image\u id,vote\u rank){…
我只是没有为这个问题复制它。我的错误。你的addVote()在哪里
函数位于哪里?你应该在任何范围之外声明它。我在问题中添加了完整的原始vote.js
文件。我在文件中包含vote.js
,按钮在哪里。我对js/ajax非常陌生,不知道怎么做。这应该放在页面的头部吗?$('body')。on('click'、'.up、.down',function(e){…
您需要将其放在$(文档)中。ready()
函数。addVote()
应该位于该函数之外或.on()旁边)
event listener。您也可以删除addVote函数并将ajax调用放入侦听器中。我想这是针对.js
文件的,ajax函数在哪里?我只有一个地方有这些按钮。是的,在var vote\u button\u html=''+投票+'';$('.\35;链接-'+图像id+'.btn投票').html)的位置(vote_button_html)
控制台中存在相同的错误。我还看到您将onClick
放在up
按钮上,但没有onClick
放在down按钮上。这是为什么?如果仍然存在错误,您的addVote函数在哪里?是的,仍然存在此错误。我在问题中添加了完整的vote.js
原始文件。
function addVote(image_id, vote_rank) {
$.ajax({
url: "add_vote.php",
data:'image_id='+image_id+'&vote_rank='+vote_rank,
type: "POST",
beforeSend: function(){
$('#links-'+image_id+' .btn-votes').html("<img src='loaderIcon.gif' />");
},
success: function(vote_rank_status){
console.log(vote_rank_status);
var votes = parseInt($('#votes-'+image_id).val());
var vote_rank_status;
switch(vote_rank) {
case "1":
votes = votes+1;
break;
case "-1":
votes = votes-1;
break;
}
$('#votes-'+image_id).val(votes);
$('#vote_rank_status-'+image_id).val(vote_rank_status);
var up,down;
if(vote_rank_status == 1) {
up="disabled";
down="enabled";
}
if(vote_rank_status == -1) {
up="enabled";
down="disabled";
}
var vote_button_html = '<div class="like"><i class="icon-like"><input type="button" title="Up" id="up" onClick="addVote('+image_id+',\'1\')" '+up+' /></i></div><div class="label-votes">'+votes+'</div><div class="dislike"><i class="icon-dislike"><input type="button" title="Down" id="down" onClick="addVote('+image_id+',\'-1\')" '+down+' /></i></div>';
$('#links-'+image_id+' .btn-votes ').html(vote_button_html);
}
});
}
<button class="btn" onClick="addVote(id, rank)">
<i class="fa fa-send"></i>
</button>
$('body').on('click', '.up, .down', function(e){
e.preventDefault();
addVote($(this).attr('data-id'), $(this).attr('data-rank'));
return false;
});
var vote_button_html = '<div class="like">' +
'<i class="icon-like">' +
'<input type="button" title="Up" id="up" '+up+' />' +
'</i>' +
'</div>' +
'<div class="label-votes">'+votes+'</div>' +
'<div class="dislike">' +
'<i class="icon-dislike">' +
'<input type="button" title="Down" id="down" '+down+' />' +
'</i>' +
'</div>';
var vote_button = $(vote_button_html);
vote_button.find("#up").on("click", function(){
addVote(image_id,1);
});
vote_button.find("#down").on("click", function(){
addVote(image_id,-1);
});
$('#links-'+image_id+' .btn-votes ').empty().append(vote_button);