私の人生の間、これらの機能がなぜ実行されているのか理解できません。関数をバインドするための適切な構文は次のとおりです。このクリック機能は適切なコールバックでも実行しています
$('#idOfThing').bind('click', foofunc);
function foofunc() { ///do things }
しかし、何かが自分のコードで行われています。これらのいずれかのバインド/バインド解除は機能しません。私が考えることができるすべての組み合わせを試しました。
$(window).on("load", function() {
$('#divContactSticky').addClass("bottomDiv");
$('#divContactSticky').bind('click', FillScreen);
});
var FillScreen = function() {
$('#divContactSticky').unbind("click", FillScreen);
$('#divContactSticky').css('height', '90vh');
};
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').bind('click', function() {
FillScreen();
});
}
これは、ウィンドウの一番下にdivを固定することです。ユーザーがそのdivをクリックするとViewPortはdivでいっぱいになります。このdivの中にはCancelボタンがあります。これはHTMLであり、CancelForm()はクリック時に実行されます。 div要素がクリックされると明らかに、私は機能をアンバインドする必要がある、またはFillScreen
は、すべてのフォーム入力で実行されますクリックするなど
私はload
コールバック型と同じCancelForm() bind
機能させることを試みました。私はすべてを試しました。私はFillScreen
=を無名関数にしました。私は考えることができる戻り値の型のほとんどすべての組み合わせを試しました。どこが間違っていますか?
編集:
CancelFormは変身を受けている、と問題が解決しません。 CancelFormは次のようにFillScreenを直ちに実行します。
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').bind('click', FillScreen);
}
**編集2:**
@Radicateは、部分的に正しい答えを持っていました。バインドとオン/オフには大きな違いがあります。以下のコードは最終的に働いたものです。
$(document).ready(function() {
$('.cancelb').click(function() {
CancelForm();
});
$('#divContactSticky').click(FillScreen);
}
$(window).on("load", function() {
$('#divContactSticky').addClass("bottomDiv");
$('#divContactSticky').on('click', FillScreen);
});
var FillScreen = function() {
$('#divContactSticky').off("click", FillScreen);
$('#divContactSticky').css('height', '90vh');
};
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').on('click', FillScreen);
event.stopPropagation()
});
}
私は 'に/ off'とunbind''バインド/交換を開始します。 "jQuery 1.7では、.on()と.off()メソッドが、要素のイベントハンドラをアタッチして削除するのに適しています。構文の問題がないことを確認するには、 'off/unbind( 'click')'だけを試してみてください。 – dlsso