我允许用户投票一个项目。当他们单击向上箭头时,我让jQuery更改了箭头的类,以使其变为绿色。现在,如果用户再次单击该箭头,则我想创建一个事件以将该箭头更改回其原始类,因此他们正在撤消其投票(例如stackoverflow投票:单击一次进行投票,再次单击以撤消)。无论如何,这是我的代码。
这些是页面加载时在php中生成的箭头类。
<a href="javascript:void(0)" id = "' . $row['item_id'] . 'up"
'; if ($row['upVote'] > 0) { echo '
class = "used_upArrow"
';} else {echo '
class = "new_upArrow"
';} echo '
rowid="' . $row['item_id'] . '">
</a>
这是我的jQuery在upvote上更改类的方法。所有这一切都完美。
//upArrow
$('.new_upArrow').click(function(){
var row = $(this).attr('rowid');
$.ajax({
type: "GET",
url: "upVote.php?id="+row,
cache: false,
async: false,
success: function() {
$('.'+row).html(parseInt($('.'+row).html()) + 1);
document.getElementById(row+'up').className = "used_upArrow";
},
error: function(result){
alert('Voting error, please try again.');
}
});
});
这是应该发生撤消的地方。因此,new_upArrow
现在应为used_upArrow
,并且该脚本应在单击时触发。
$('.used_upArrow').click(function(){
var row = $(this).attr('rowid');
$.ajax({
type: "GET",
url: "downVote.php?id="+row,
cache: false,
async: false,
success: function(result) {
$('.'+row).html(parseInt($('.'+row).html()) - 1);
document.getElementById(row+'up').className = "new_upArrow";
},
error: function(result){
alert('Voting error, please try again.');
}
});
});
检查萤火虫时,该类实际上是从new_upArrow
更改为used_upArrow
,但是单击该类时它仍会继续更新,就好像该类没有更改一样。有什么想法吗?先感谢您。
参考方案
使用jQuery live event binding,例如
$('.new_upArrow').live('click', function(){
和
$('.used_upArrow').live('click', function(){
您的事件绑定不起作用的原因是因为普通绑定(例如element.click()
)在执行时仅处理一次。
实时活页夹使用事件委托,该委托将现在和将来将处理程序附加到匹配的元素。
PHP:将数组值加在一起 - php我相信这比标题听起来要难一些,但我可能完全错了。我有一个像这样的数组:[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 我希望能够采用通用…
PHP JQuery复选框 - php我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…