2016-10-02 5 views
0

クリックしたときに新しいクラスを切り替えるボタンを作成したい場合、その新しいクラスをクリックするとgoAwayがtrueに設定されます。ここで私が使っていることは誰もがこれを防ぐことに気付いていますか?これは、行がある他のすべてのonclick関数で動作します:goAway = true;jQueryクラスのクリック機能を使用してwindow.onbeforeunloadを無効にするにはどうすればよいですか?

var goAway = false; 

$("button:not(.MyNewClass)").click(function(){ 
window.onbeforeunload = function() { 
if (!goAway) { 
return 'Syanara mutha ******'; 
     } 
    } 
}); 
$(document).ready(function() { 
     $('.MyNewClass').click(function() { 
     goAway = true; 
    }); 
}); 

私も

var goAway = false; 

$("button:not(.MyNewClass)").click(function(){ 
window.onbeforeunload = function() { 
if (!goAway) { 
return 'Syanara mutha ******'; 
     } 
    } 
}); 
$(document).ready(function() { 
     $('.MyNewClass').click(function() { 
     window.onbeforeunload = null; 
    }); 
}); 

答えて

0

最後に!私はそれを考え出した。 jQueryを使って切り替えるように設定要素にJavaScriptのonClickイベント添付;

HTMLボタン):

<button onclick="removeWarning()">This is the button</button> 

次に残り:

<script> 
var goAway = false; 
$("button").click(function(){ 
$(this).toggleClass('MyNewClass'); 
window.onbeforeunload = function() { 
if (!goAway) { 
return 'Syanara mutha ******'; 
     } 
    } 
}); 
function removeWarning(){ 
if ($("button").hasClass('MyNewClass')){ 
goAway = true; 
    } 
} 
</script> 
0

あなたはどちらか、こののいずれかを試すことができます...以下、これを試してみましたが、どちらも動作するようには思えてきました。

まず1:

$(window).unbind('onbeforeunload'); 

第二1:

window.onbeforeunload = false; 

を私はこれがあなたのために働く願っています。

更新: 私はあなたがclick関数内onbeforeunload機能を置い気づきました。 この機能をサイド・オブ・クリック機能の外側に配置してみてください。

window.onbeforeunload = function() { 
    if (!goAway) { 
     return 'Syanara mutha ******'; 
     } 
    } 
+0

残念ながら、運。私が以前window.onbeforeunloadを有効にした場合、通常動作するすべてのものは動作しないようです。それがなぜ起こるのかわからない。 – joseph

+0

一度更新を確認してください –

+0

これはデフォルトの動作にしたくないためです。ボタンをクリックした後に警告が表示されるようにするだけです。その後、同じボタンを2度クリックすると無効になります。 基本的に、このページはjQueryトグルを使用していくつかの深いレイヤーになっています。彼らが最初に戻ってきた場合、私は彼らが出発すると警告されることを望んでいません。一度始めたらヒットしただけで、戻ってきたことはありません。 – joseph

関連する問題