2

描画アプリで作業していて、.addClassの使用で問題が発生しています。私がやろうとしているのは、新しいクラスをメニュー項目に送信し、それを使用してキャンバスをクリアする関数を実行することです。クラスが「new_file」に事前設定されている場合、リストアイテムに関数を単独で呼び出させることができますが、キャンバス上で描画が行われるまで、リストアイテムを非アクティブにします。私のアイデアは、キャンバス上でマウスダウンが検出されたときに.addClassを使用することでしたが、計画どおりに機能していません。これを達成する方法に関する他のアイデアも奨励されています。ここにいくつかのコードがあります:

私のcanvas.jsファイルからのこのコードは、クラス'new_file'のリストアイテムがクリックされたときにキャンバスをクリアします。

    $(document).ready(function(){
       $('.new_file').mousedown(function(){
          clearCanvas(); 
       });

       function clearCanvas(){
          context.clearRect(0, 0, canvas.width(), canvas.height());
       }
    });

これは私がクラスを追加するために試したものです。それは今のところ私の「頭」にあります:

    <script>
       $(document).ready(function(){
           $("#myCanvas").click(function() {  //tried .mousedown; did nothing
               $("#clear").addClass("new_file");
           });
       });
    </script>

これは私が操作しようとしているリストアイテムです:

    <li id="clear">Clear</li>

そして私のキャンバス:

    <canvas class="canvaso" id="myCanvas" height="239" width="414"></canvas>
    <script type="text/javascript" src="canvas.js"></script>

ファイアバグを観察しながらいろいろな編集を試してみましたが、リスト項目に「new_file」が追加されていないようです。また、#myCanvasを変更し、ページ上の他のIDをテストしようとしましたが、それでもnew_fileを追加できませんでした。困惑。

4

1 に答える 1

3

を使用してみてくださいlive。そうすれば、要素にクラスを追加すると、それらは自動的に関数にバインドされます。

$('.new_file').live('mousedown', function(){
    clearCanvas(); 
});

jQuery 1.7以降を使用している場合は、on代わりにを使用してくださいlive(現在は非推奨になっています)。

于 2012-09-30T04:50:26.897 に答える