2016-12-28 48 views
0

我正在显示单个页面上的动态内容列表,其中每个内容都具有相同的标志和按钮。我希望用户能够点击一个“赞”按钮,并使该项的“不喜欢”按钮被禁用,反之亦然。用于替换重复元素的长列表中的内容的目标特定元素

我的问题是这样的:如果用户点击“不喜欢”,那么页面上的所有“赞”按钮都会被禁用。我只想为该条目关联的“赞”按钮受到影响。

我有这个代码部分工作,但正如我所说,它会更改页面上的所有按钮。如何更新其中的一个内容?

注意:这些按钮的功能的后端处理工作正常,这个问题只关于jquery和bootstrap功能。非常感谢。

<div class="text-right"> 
<span class="like"><a class="likelink btn btn-info btn-xs" href="{path='sightings/ajax_like'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span></a></span> 
<span class="flag"><a class="flaglink btn btn-info btn-xs" href="{path='sightings/ajax_flag'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span></a></span> 
</div> 

<div class="text-right"> 
<span class="like"><a class="likelink btn btn-info btn-xs" href="{path='sightings/ajax_like'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span></a></span> 
<span class="flag"><a class="flaglink btn btn-info btn-xs" href="{path='sightings/ajax_flag'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span></a></span> 
</div> 

<div class="text-right"> 
<span class="like"><a class="likelink btn btn-info btn-xs" href="{path='sightings/ajax_like'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span></a></span> 
<span class="flag"><a class="flaglink btn btn-info btn-xs" href="{path='sightings/ajax_flag'}/{entry_id}"><span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span></a></span> 
</div> 


$(document).ready(function(){ 

// FLAGGING 

    $('a.flaglink').on('click', function(e){ 
     e.preventDefault(); 
     var flaglink = $(this); 
     var url = flaglink.attr('href'); 
     if (url !== null) { 
      $.ajax({ 
       url: url, 
       success: function(results) { 

        flaglink.closest('.flag').html('<a href="#" class="flaglink btn btn-xs btn-danger" title="flagged"><span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"></span> Flagged</a>').fadeIn('slow'); 
        $('span.like').closest('a.likelink').prop('disabled', true); 

       }, 
       error: function(results) { 
        console.log('ERROR:' + results); 
       } 
      }); 
     } // if 

    }); // flag 


}); // document ready 

回答

1

你已经拥有的flaglink的实例,以便使用特定的实例从遍历,而不是更通用$('span.like'),其中包括所有的类存在

喜欢的东西的:

flaglink.parent().siblings('.like').find('a.likelink').prop('disabled', true); 
+0

我试过这个答案,它没有奏效。基本的想法对我来说似乎是正确的,但即使尝试了一些排列后,它仍然不起作用。 – Zonamaster

+0

在jsfiddle或其他沙箱中创建一个实时演示 – charlietfl

+0

我创建了这个jsfiddle,但它不像开发网站那样工作,因为ajax没有连接。请耐心等待,因为这是我的第一个jsfiddle,所以我不确定我是否做到了这一点。希望这有助于,谢谢。 https://jsfiddle.net/58ep2x7k/7/ – Zonamaster