2013-07-17 38 views
1

我想追加另一個img來代替plus.svg。如果你們知道以某種方式切換.append()方法的方法,那就太好了。我想在點擊它時更改CSS,然後再次更改,基本上。有沒有辦法切換.append()jQuery方法?

  $(function(){ 
      $("#btw").click(function(){ 
       $("#btwl").slideToggle(300); 
       $(this).append("<style>#btw::before{content: url(minus.svg);width: 16px;eight: 16px;background-size: 16px 16px;background-repeat: no-repeat;vertical-align: middle;padding-right: 10px;}</style>"); 
      }); 
     }); 
+0

提供ID刪除CSS你是什麼意思'由.append()方法,'切換?任何示例 – bipen

+1

您可以準備兩個CSS類,然後有條件地使用jQuery的addClass和removeClass方法。 –

回答

1

如果使用toggleClass你可以達到同樣的效果你的CSS樣式表做類似的事情:

.selected::before { 
    content: url(minus.svg); 
    width: 16px; 
    height: 16px; 
    background-size: 16px 16px; 
    background-repeat: no-repeat; 
    vertical-align: middle; 
    padding-right: 10px; 
} 

來源:http://api.jquery.com/toggleClass/

+0

但它的psuedo(::之前)。它會繼續工作嗎? – Matthew

+0

是的,它應該。無論你需要哪種選擇器,都可以在你的例子中在CSS中工作。 – jrthib

1

您可以使用toggleClass
將在某些類所需要的風格和做

$("#btw").click(function(){ 
     $(this).toggleClass("requiredClass"); 
    }); 
1

使用toggleClass方法:

$(this).toggleClass('selected'); 

然後在:

<style style="text/css"> 
    .before::before{ 
     content: url(minus.svg); 
     width: 16px; 
     height: 16px; 
     background-size: 16px 16px; 
     background-repeat: no-repeat; 
     vertical-align: middle; 
     padding-right: 10px; 
    } 
</style> 
<script type="text/javascript"> 
    $(function(){ 
     $("#btw").click(function(){ 
      $("#btwl").slideToggle(300); 
      $(this).toggleClass("before"); 
     }); 
    }); 
</script> 
1

您可以將樣式

$(function(){ 
    $("#btw").click(function(){ 
     $("#btwl").slideToggle(300); 
     if($('#btwl').is(':hidden')) { 
      $(this).append("<style id='toggle_css'>#btw::before{content: url(minus.svg);width: 16px;eight: 16px;background-size: 16px 16px;background-repeat: no-repeat;vertical-align: middle;padding-right: 10px;}</style>"); 
     } else { 
      $('#toggle_css').remove(); 
     } 
    }); 
}); 
相關問題