2017-08-21 1 views
0

私は画面の幅1024以上で機能したいミュートボタンを持っています。 上記のブレークポイント以下で機能を使用するべきではありません。私はいくつかの方法を試しましたが、まだこれを達成することはできません。任意のポインタが役立つだろう。以下の私のスニペットをご覧ください。クリック機能は1024pxのブレークポイントを超えてのみ利用可能

if($(window).width() > 1024) { 
 
    $("#mute").click(function() { 
 

 
     if ($("video").prop('muted')) { 
 
      $("video").prop('muted', false); 
 
      $(this).removeClass("fa-volume-off"); 
 
      $(this).addClass("fa-volume-up"); 
 

 
     } else { 
 
      $("video").prop('muted', true); 
 
      $(this).removeClass("fa-volume-up"); 
 
      $(this).addClass("fa-volume-off"); 
 

 
     } 
 
    } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

スニペットに構文エラーがあり、コードの問題点が説明されていません。上記のスニペットは、あなたが達成しようとしているものとどのように違いますか?ウィンドウが縮小した場合にイベントを削除したい場合は、$( "#mute")。on( "click" ... 'に変更し、' $( "#mute" ).off( "click"); ' – Santi

+0

last'} 'が必要)};そしてあなたは今直面している問題は何ですか? –

+0

@AlivetoDieが変更を加えました。構文エラーが発生しました。 'Uncaught SyntaxError:予期しないトークンです。' – Olivbelle

答えて

1

はjavascriptのエラーを削除し、それが機能するようになりました。

if($(window).width() > 1024) { 
    $("#mute").click(function() { 

     if ($("video").prop('muted')) { 
      $("video").prop('muted', false); 
      $(this).removeClass("fa-volume-off"); 
      $(this).addClass("fa-volume-up"); 

     } else { 
      $("video").prop('muted', true); 
      $(this).removeClass("fa-volume-up"); 
      $(this).addClass("fa-volume-off"); 

     } 
    }); 
    } 
+1

ブラウザが起動してもまだ動作しません – epascarello

1

を私が思うに、あなたは、サイズ変更があった場合は、ウィンドウの幅をチェックして、必要なアクションを実行する必要があります。このような 何か:

$(document).ready(function(){ 
    $(window).resize(function() { 
    if(window.width < 1024) 
    { 
     $("#mute").off("click"); 
    } 
    else 
    { 
     $("#mute").click(function() { 
     . . . 
     }) 
    } 
    }); 

    $("window").trigger("resize"); // On trigger resize to make button active if window is already > 1024 
}) 
+0

リスナーにも負荷を割り当てる必要があります。 –

+0

あなたは '$(document).ready(function(){})'を意味しますか? – Livingstone

+0

@Livingstone彼が何を意味するかは、ウィンドウのサイズを最初に変更しない限り、ボタンが機能しないということです。 –

1

コードを実行しているときにクリックハンドラを追加しています。クリックをしているときではありません。そのコードを実行するときにwidth> 1024pxになると、ハンドラが作成され、幅が1024px未満になった場合でも動作します。同様にそのコードと幅< 1024pxを実行すると、クリックハンドラは決して作成されません!だから、

、($ .readyまたは類似の内側に)このコードを試してみてください。

$("#mute").click(function() { 

    if ($(window).width() <= 1024) return; // maybe return false; 

    if ($("video").prop('muted')) { 
    $("video").prop('muted', false); 
    $(this).removeClass("fa-volume-off"); 
    $(this).addClass("fa-volume-up"); 

    } else { 
    $("video").prop('muted', true); 
    $(this).removeClass("fa-volume-up"); 
    $(this).addClass("fa-volume-off"); 

    } 
}); 

編集:私は答えたが、すでに上記のコメントを...

0

ただでif声明を交換しようclickイベントハンドラ

$(document).ready(function() { 
    $("#mute").click(function() { 
    if ($(window).width() > 1024) { 
     alert("Clicked"); 
    } 
    }); 
}); 

ここにはFiddleがあります。

関連する問題