2016-07-02 5 views
0

のjQueryのコールバック関数では動作しませんが右ボタンをクリックするまたはを去ったとき、私はいくつかの<div>とそのpadding-leftを修正する必要があります。私はそれぞれの選択された要素のpadding-leftに従って変更font-weightfont-styleを欲しいです。 padding-leftが20の場合、font-weightnormalに設定されます。 padding-leftは40文はIF-クリックイベント

$(document).ready(function() { 
 
      $(".toGrab").on("click", function() { 
 
       $(this).toggleClass('selected'); 
 
      }); 
 
      $("#key").click(function() { 
 
       var sl = parseInt($(".selected").css("padding-left")); 
 
       $(".selected").css({ 
 
        paddingLeft: "+=" + "20" 
 
       }); 
 
       if (sl >= '100') { 
 
        $(".selected").css({ 
 
         paddingLeft: 100 
 
        }); 
 
       } 
 
      }); 
 
      $("#key1").click(function() { 
 
       $(".selected").css({ 
 
        paddingLeft: "-=" + "20" 
 
       }); 
 
      }); 
 

 
      $(document).ready(function() { 
 
       $("#key").click(function() { 
 
        
 
        var n = $(".toGrab").css("padding-left"); 
 

 
        if (n < 20) { 
 
         $(".toGrab").css("font-weight", "normal"); alert("n"); 
 
        } 
 
        if (n < 40) { 
 
         $(".toGrab").css("font-weight", "italic"); alert("n"); 
 
        } 
 
        else { 
 
         $(".toGrab").css("font-weight", "bold"); 
 
        } 
 

 
       }); 
 
      }); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<style> 
 
     div{ 
 
      background-color:yellow; 
 
      margin-top:20px; 
 
     } 
 
     div { 
 

 
} 
 
.selected { 
 
background-color:lightblue; 
 
    
 
} 
 
    </style> 
 
</head> 
 
<body> 
 
    <button id="key">left</button> 
 
    <button id="key1">right</button> 
 

 
    
 
    <div class='toGrab'>grand parent</div> 
 
    <div class='toGrab'>parent</div> 
 
    <div class='toGrab'>child</div> 
 
    <div class='toGrab'>child</div> 
 
    <div class='toGrab'>child</div>

パディング左の変更は時にdiv要素を選択し、左ボタン

+0

代わりに 'SL> =「の' SL> = 100' 100''試してみてください。 – Xufox

+0

@xufox関数が動作している場合、フォントウェイトを変更する最後のステップで使用された関数が機能していない場合 – aswathy

+0

文字列と何かを数値として比較することは直感的ではなく、予期しない結果につながる可能性があります... 'if'文を実行するには、' n'が何であるかを知る必要があります。最後に 'px'という文字列です。それを数字と比較することはできません。あなたは 'px'を削除し、最初に' n'を数字に変換する必要があります。 – Xufox

答えて

3

いくつかの提案や改訂コードなどをクリックしたとき、そのfont-styleitalicに割り当てられますあなたに続いて。

  1. italicfont-style代わりのfont-weightに属します。それはCSSスタイルを変える動作しないのはなぜ
  2. あなたが$("#key").click(function(){ // Here })をオーバーライドして、あなたが$(".toGrab").each(function(){ // $(this) will be the each element of the Array. })を実行する必要がなるように$("#key1").click(function(){ // Here })
  3. $(".toGrab")リターンにマッチしたjQueryの要素の配列を同じコードを与えていないということです。

$(document).ready(function() { 
 
      $(".toGrab").on("click", function() { 
 
       $(this).toggleClass('selected'); 
 
      }); 
 
      $("#key").click(function() { 
 
       var sl = parseInt($(".selected").css("padding-left")); 
 
       sl = sl >= 100 ? "100" : "+=20"; 
 
       $(".selected").css({ 
 
        "padding-left": sl 
 
       }); 
 
       $(".toGrab.selected").each(function() { 
 
        var paddingLeft = parseInt($(this).css("padding-left")); 
 
        var isPaddingLeft20 = paddingLeft === 20; 
 
        var isPaddingLeft40 = paddingLeft === 40; 
 
        if(isPaddingLeft20) $(this).css("font-weight", "normal"); 
 
        else if(isPaddingLeft40) $(this).css("font-style", "italic"); 
 
        else $(this).css("font-weight", "bold"); 
 
       }); 
 
      }); 
 
      $("#key1").click(function() { 
 
       $(".selected").css({ 
 
        "padding-left": "-=" + "20" 
 
       }); 
 
       $(".toGrab.selected").each(function() { 
 
        var paddingLeft = parseInt($(this).css("padding-left")); 
 
        var isPaddingLeft20 = paddingLeft === 20; 
 
        var isPaddingLeft40 = paddingLeft === 40; 
 
        if(isPaddingLeft20) $(this).css("font-weight", "normal"); 
 
        else if(isPaddingLeft40) $(this).css("font-style", "italic"); 
 
        else $(this).css("font-weight", "bold"); 
 
       }); 
 
      }); 
 

 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script> 
 
<style> 
 
     div{ 
 
      background-color:yellow; 
 
      margin-top:20px; 
 
     } 
 
     div { 
 

 
} 
 
.selected { 
 
background-color:lightblue; 
 
    
 
} 
 
    </style> 
 
</head> 
 
<body> 
 
    <button id="key">left</button> 
 
    <button id="key1">right</button> 
 

 
    
 
    <div class='toGrab'>grand parent</div> 
 
    <div class='toGrab'>parent</div> 
 
    <div class='toGrab'>child</div> 
 
    <div class='toGrab'>child</div> 
 
    <div class='toGrab'>child</div>