Javascript jQuery事件更新之前需要页面刷新

Javascript jQuery事件更新之前需要页面刷新,javascript,jquery,Javascript,Jquery,我制作了一个类似的系统,但当我点击“相似”按钮时,它将运行,但我必须刷新页面,以便我能够点击“不同”按钮,即使它正在显示?请帮助我,我需要它能够被点击和工作后,彼此的权利 <script type="text/javascript"> $(document).ready(function(){ $('.like').click(function(){ if($(this).attr('title')=='like'){ $.post('/like.php',{imid:$

我制作了一个类似的系统,但当我点击“相似”按钮时,它将运行,但我必须刷新页面,以便我能够点击“不同”按钮,即使它正在显示?请帮助我,我需要它能够被点击和工作后,彼此的权利

<script type="text/javascript">
$(document).ready(function(){
 $('.like').click(function(){
  if($(this).attr('title')=='like'){
   $.post('/like.php',{imid:$(this).attr('id'),action:'like'});
    $(this).removeClass('like').addClass('unlike');
    $(this).attr('title','unlike');
  }
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
    $('.unlike').click(function(){
   if($(this).attr('title')=='unlike'){
    $.post('/like.php',{imid:$(this).attr('id'),action:'unlike'});
     $(this).removeClass('unlike').addClass('like');
     $(this).attr('title','like');
    }
  });
});
</script>

$(文档).ready(函数(){
$('.like')。单击(函数(){
if($(this.attr('title')=='like'){
$.post('/like.php',{imid:$(this.attr('id'),action:'like'});
$(this.removeClass('like').addClass('inference');
$(this.attr('title','inference');
}
});
});
$(文档).ready(函数(){
$('.与之不同')。单击(函数(){
if($(this.attr('title')=='inference'){
$.post('/like.php',{imid:$(this.attr('id'),action:'inspect'});
$(this.removeClass('inferences').addClass('like');
$(this.attr('title','like');
}
});
});
试一试(通过使用ON,您将在尚未应用的类上设置事件处理程序):


$(文档).ready(函数(){
$(文档).on('单击','与',函数()不同){
if($(this.attr('title')=='inference'){
$.post('/like.php',{imid:$(this.attr('id'),action:'inspect'});
$(this.removeClass('inferences').addClass('like');
$(this.attr('title','like');
}
});
});

我认为@Steven Britton的回答应该有效——除非他因为喜欢而错过了比赛

以下是我的作品:

<script type="text/javascript">
$(function(){
    $('body')
    .on('click', '.like', function(){
        // Do whatever to register action
        $(this).removeClass('like').addClass('unlike').attr('title', 'unlike');
    })
    .on('click', '.unlike', function(){
        // Do whatever to register action
        $(this).removeClass('unlike').addClass('like').attr('title', 'like');
    });
});
</script>

$(函数(){
$(“正文”)
.on('click','like',function(){
//做任何事来登记行动
$(this).removeClass('like').addClass('inferences').attr('title','inferences');
})
.on('单击','。与',函数()不同{
//做任何事来登记行动
$(this).removeClass('inferences').addClass('like').attr('title','like');
});
});
我不认为有必要进行测试(如果title=inspect),因为不管怎样,对于like/inspect都有不同的类。如果你要做一个测试,我建议你通过课堂测试来做——当你换成文本时(例如翻译页面),标题中的文本测试就会中断。文本是演示文稿的一部分,类是数据结构的一部分

您可以为所有链接提供一个公共类(例如“like-inspect”),除了like或dispect类之外,还可以使用以下内容:

<script type="text/javascript">
$(function(){
    $('body').on('click', '.like-unlike', function(){
        if( $(this).hasClass('like') ){     
            // Do whatever to register action
            $(this).removeClass('like').addClass('unlike').attr('title', 'unlike');
        } else if( $(this).hasClass('unlike') ){
            // Do whatever to register action
            $(this).removeClass('unlike').addClass('like').attr('title', 'like');
        } else {
            // SHould never happen - log error?
        }
    });
});
</script>

$(函数(){
$('body')。在('click','like-inspect',function()上{
if($(this.hasClass('like')){
//做任何事来登记行动
$(this).removeClass('like').addClass('inferences').attr('title','inferences');
}else if($(this).hasClass('inference')){
//做任何事来登记行动
$(this).removeClass('inferences').addClass('like').attr('title','like');
}否则{
//不应该发生-日志错误?
}
});
});
若要回答有关如何使用委派事件的注释,请执行以下操作:。在(像这样使用时)使用委派事件。我将事件绑定到文档体,而不是类似的按钮。当用户单击like按钮时,事件将冒泡到运行委托事件的主体(假设单击的元素与我作为.on的第二个参数给出的选择器相匹配(.e.g).like-inspect”,在我的最后一个示例中)

不同之处在于,原始代码是“当页面加载时,找到类为“like”的所有元素,并将此click事件附加到这些元素上,以及将类为“nothing”的所有元素,并将该click事件附加到这些元素上”。当运行click事件时,它会将类从like更改为nothing。但因为元素没有类“nothing”加载文档时,找不到它,也没有得到该事件。事实上,即使在类更改为“不像”之后,它仍然具有“like”事件处理程序因为该事件处理程序是在加载页面时附加到元素的。要附加事件的元素列表是使用特定类找到的这一事实并不重要-列表上的那些元素获取该事件处理程序并保留它

通过在元素的三参数形式中使用.on附加到主体,我们将根据元素单击时的类而不是加载文档时的类来运行事件


我的第二个示例(使用like-inspect类)实际上,它也可以作为非委派事件使用,但我仍然认为委派事件在这里更好—您可能最终会使用ajax请求或其他方式加载内容。

因为您要更改类,所以必须使用事件委派,就像您动态添加元素一样。请参阅是否有任何错误?$(文档)。on('click','.nothing',function(){…});只需使用一个事件绑定来切换类,然后根据上一个类的内容发送帖子…我将如何使用deligate?或bind?不,您使用的是。on与相同。clickdidnt工作…我认为它与我的正确操作相同?非常感谢!
<script type="text/javascript">
$(function(){
    $('body').on('click', '.like-unlike', function(){
        if( $(this).hasClass('like') ){     
            // Do whatever to register action
            $(this).removeClass('like').addClass('unlike').attr('title', 'unlike');
        } else if( $(this).hasClass('unlike') ){
            // Do whatever to register action
            $(this).removeClass('unlike').addClass('like').attr('title', 'like');
        } else {
            // SHould never happen - log error?
        }
    });
});
</script>