2016-04-01 15 views
1

このjqueryイベントの内部に関数を挿入しようとしています。これは、イベントイベントjquery内に関数を挿入します

$(":checkbox").on('change', function() { 
     $.fn.myFunction(); 
}) 

であり、これは最初のallert作業MyFunctionを

$.fn.myFunction = function() { 
      alert('ciao'); 
      if ($(this).is(':checked')) { 
      InputInserireInput = $(this).parent().parent().parent().find('.inserirePrezzoDiv'); 
      $(this).closest('div').parent().parent().find('select').prop('value','0'); 
      $(this).find('button').css('background-color','#c31432') 

      var checkbox = $(this); 
      InputInserireInput.removeClass('hidden'); 

      var checkboxSelected = $(this).attr('id');        
      var nomeServizio = ($(this).next('label').text());     

      $(this).closest('div').parent().parent().find('.titoloPiega').css('color', 'black') 
      $(this).closest('div').parent().parent().find('button').css('margin-top', -50) 

      var titleLabel = $(this).closest('div');       
      var titleSelect = $(titleLabel).parent().parent().find('.titoloPiega'); 
      var option1 = $(titleLabel).parent().parent().find('.option1'); 
      var option2 = $(titleLabel).parent().parent().find('.option2'); 
      var selectOption = ($(titleLabel).parent().parent().find('select')); 
      var selectOptionID = ($(titleLabel).parent().parent().find('select').attr('id')); 

      $(selectOption).on('change', function() { 
       var selectedOption = $(selectOption).prop('value'); 

       if (selectedOption == 1 && checkbox.is(':checked')) { 
        InputInserireInput.addClass('hidden'); 
        option2.addClass('hidden'); 
        option1.removeClass('hidden'); 
       } 
       if (selectedOption == 2 && checkbox.is(':checked')) { 
        InputInserireInput.addClass('hidden'); 
        option1.removeClass('hidden'); 
        option2.removeClass('hidden'); 
       }  
       if (selectedOption == 0 && checkbox.is(':checked')) { 
        InputInserireInput.removeClass('hidden'); 
        option1.addClass('hidden'); 
        option2.addClass('hidden'); 
       }    
      }); 

     } else { 
      $('.inserirePrezzoDiv').addClass('hidden');  
      $(this).closest('div').parent().parent().find('.titoloPiega').css('color', '#a5a6a7'); 
      $(this).closest('div').parent().parent().find('select').prop('value','0');   
      $(this).closest('div').parent().parent().find('.option1').addClass('hidden'); 
      $(this).closest('div').parent().parent().find('.option2').addClass('hidden'); 
      $('.bottoneCss6').css('margin-bottom', 0) 
     } 
    }; 

ですが、その後、すべての私はthik文は」関数の前に宣言したイベントとの一致をdoesnの場合。誰でも助けてくれますか?置き換えることにより、

+3

this(現在のチェックボックス)のスコープを渡します').myFunction() '、またはあなたのケースでは$(this).myFunction()'イベントハンドラの中 – adeneo

+0

ありがとうございました。 –

答えて

2

試し:チェックボックス:

$(":checkbox").on('change', function() { 
    $(this).myFunction() 
}) 

あなたは `$ .fn.myFunction`が明確に` $( 'と呼ばれることを期待しているmyFunction

+2

最初のオプションは、意図された使用である必要があります。 2番目の方法は単純なjQuery拡張メソッドである必要があります(構文が正しくなく、結果をバインドして関数を評価しています)。 –

+0

ええ、私は同意している(コメントを追加するために編集する)。しかし、 'bind'メソッドを使うことで、' scope'がどのように関数に渡されるのかが分かりやすくなります。(良いjquery方法ではありません) – Arthur

+0

バインドが間違って使われているようです) –

関連する問題