无法在新的 ajax 调用上更改 css

Posted

技术标签:

【中文标题】无法在新的 ajax 调用上更改 css【英文标题】:Unable to Change css on new ajax call 【发布时间】:2016-04-17 01:53:42 【问题描述】:

这是我的html

<div id="tabs" >
              <ul class="cat-head">
              <li>All</li>
              % for category in brandcategory %
              <li id="catcategory.id" onclick="sendBrandCategory(event, category.id)">category</li>
              % endfor %
              </ul>    
          </div>

这里是 ajax 脚本

<script type="text/javascript">
  function sendBrandCategory(event, category) 
          var data =  category : category , action:'inventory';
          $.ajax(        
              type: "GET",
              url: "% url 'storeView'  user=store.user %",
              data: data,
              success: function(data) 
                  var thumb = $(data).find('#brand');
                  $('#brand').html(thumb);  
                  $('#cat'+ category).css('background-color':'black');  
                ,
              error: function(response, error) 
                  alert(error);  
              
          );
      

</script>

在 ajax 成功时,我可以设置第一个 li 元素 css,但在单击第二个 li 元素时,第一个元素 css 仍保留在页面上。我希望一个 li 元素一次在 ajax 成功时具有背景色。如何我能做到吗?谢谢

【问题讨论】:

@UnknownUser 请解释一下如何在 sn-p 中实现 AJAX 功能? $('#cat'+ category).css('background-color':'black'); 之前请移除所有li 元素的背景颜色。然后它会正常工作 【参考方案1】:

您需要在分配新背景之前重置最后的项目:

<script type="text/javascript">
  function sendBrandCategory(event, category) 
          var data =  category : category , action:'inventory';

          // see here:
          $('[id^="cat"]').each(function() 
               $(this).css('background-color', 'yellow'); // I put yellow but you can put the color you need
          );
          $.ajax(        
              type: "GET",
              url: "% url 'storeView'  user=store.user %",
              data: data,
              success: function(data) 
                  var thumb = $(data).find('#brand');
                  $('#brand').html(thumb);  
                  $('#cat'+ category).css('background-color':'black');  
                ,
              error: function(response, error) 
                  alert(error);  
              
          );
      

</script>

【讨论】:

【参考方案2】:

试试这个代码:

 <script type="text/javascript">
   function sendBrandCategory(event, category) 
           var data =  category : category , action:'inventory';
           $.ajax(        
               type: "GET",
               url: "% url 'storeView'  user=store.user %",
               data: data,
               success: function(data) 
                   var thumb = $(data).find('#brand');
                   $('#brand').html(thumb);  
                   $("ul.cat-head li").css('background-color':'none');            
                   //this is new line added
                   $('#cat'+ category).css('background-color':'black');  
                ,
              error: function(response, error) 
                  alert(error);  
              
          );
      
</script>

【讨论】:

以上是关于无法在新的 ajax 调用上更改 css的主要内容,如果未能解决你的问题,请参考以下文章

jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询

如何在新的意图活动完成后启动其余方法

在spring mvc中从ajax调用jasperreport时出现解析器错误

onActivityResult() 未在新的嵌套片段 API 中调用

在新的 Unity 网络中进行“直接”RPC 样式调用?

jQuery:更改加载了 ajax 的元素上的 CSS?