2016-04-01 10 views
1

ich versuche, eine Funktion in diesem jquery-Ereignis einzufügen. Dies ist der Fallfügen Sie eine Funktion in einem Ereignis ein jquery

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

und das ist 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) 
     } 
    }; 

Die erste allert Arbeit, aber dann all if-Anweisung i doesn‘Spiel mit dem Ereignisse vor der Funktion erklärt thik. Kann mir jemand helfen?

+3

'$ .fn.myFunction' eindeutig als' $ genannt zu werden erwartet passieren (': Checkbox ') .myFunction() ', oder in Ihrem Fall' $ (this) .myFunction() 'in der Event-Handler – adeneo

+0

Vielen Dank. –

Antwort

2

Versuch durch Ersetzen:

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

Sie die this (aktuelle Option) Anwendungsbereich myFunction

+2

Erste Option sollte die beabsichtigte Verwendung sein. Das zweite überkompiliert, was eine einfache jQuery-Erweiterungsmethode sein sollte (und Sie haben die falsche Syntax und werten die Funktion aus und binden dann das Ergebnis). –

+0

Ja, ich bin einverstanden (und bearbeiten, um einen Kommentar hinzuzufügen). Aber mit der 'bind'-Methode ist es einfacher zu verstehen, wie' scope' an die Funktion übergeben wird (aber nicht die gute jquery-Methode) – Arthur

+0

Die Bindung scheint falsch verwendet zu werden (auf das Ergebnis des Funktionsaufrufs)) –

Verwandte Themen