2010-12-17 6 views
0

ページが最初に読み込まれたときに関数の一部を実行したいが、changeイベントの大部分は、その後にターゲットとのやりとりが行われたときにのみ実行する必要があります。docreadyのjQueryイベントを変更する

問題は、2つのイベントが無関係ではないということです。ページの読み込み時に特定のdivを表示したい場合、divを表示/非表示するクリックアクションが必要です。私はこれらの2つの部分を別々に走らせることができますが、それらを組み合わせることはできませんでした。

私の質問は、この分離を達成する最良の方法は何ですか? jQueryに「このパーツを1回だけ実行する」または「このパーツをページ読み込み、この部分をonclickで実行する」というメソッドがありますか?

例として、私は(それがすぐに実行されるように.change();を使用しています)Docreadyにロードし、このコードを持っている:

$(function() { 
    $('.trigger :checkbox').change(function() { 
    $(this).parent().nextAll('ul.hidden').toggle(this.checked); 
    }).change(); 
}); 

をしかし、私は、誰かが私の.triggerの1をクリックしたときにこのコードを実行したいalseクラス:

$('.trigger :checkbox').change(function() { 
    var $target = $(this).parent().nextAll('.hidden'); // go up a level and then look for the next list with the hidden class 
    $(this).parent().toggleClass('open'); // the class of the label needs to change, so find the parent of the checkbox 
    $target.fadeToggle(); 
    if($(this).is(':checked')) { 
     $target.find('.hidden').css('display', 'none'); // hide all submenus 
    } else { 
     $target.find(':checkbox').removeAttr('checked'); // untick all checkboxes in sub-menu if unchecking 
    }                     
}); 

現在のところ、クリックイベントは非常に混乱します。

+1

私は私はあなたが望むものを理解していません。ページが読み込まれたときにいくつかのイベントを実行したいのですか、要素がクリックされたときに別のイベントを実行しますか?このようにhttp://jsfiddle.net/yg7f9/? – alexn

+0

種類:私の問題は、私の変更機能をこの同じものに適用する必要があるため、私は 'this'を利用できるということです。それは理にかなっていますか? – CherryFlavourPez

答えて

0

あなたは機能に「機能」を出し分割し、ページのロードと変更イベントから別の関数を呼び出す必要があります。

$(function() { 

doSomething(); 

$("#selectElement").change(doSomething()); 

}); 

function doSomething() {} 
+0

ありがとうございます。私はそれを私のdocready内の2つの関数に分割しました。私が望むように実行するためには、何を追加する必要がありますか?私はここに例を入れました:http://jsfiddle.net/ed_melly/8Y89V/? – CherryFlavourPez

関連する問題