2015-05-30 30 views
5

Próbuję wykonać następujący kod JQuery zgodny z JSLint.JSLint - niezadeklarowane ostrzeżenie "jQuery"

(function ($) { 
    "use strict"; 
    $('.addition').click(function() { 
     $('.textbox:last,.addition:last,.subtraction:last,.replace:last').clone(true).appendTo('.replace:last'); 
     $('.textbox:last').val(""); 
     $('.addition:not(:last),.subtraction:not(:last)').attr('disabled','true'); 
    }); 

    $('.subtraction').click(function() { 

     if($('.replace').length === 1) { 
      $('.subtraction').click(function (event) { 
       event.preventDefault(); 
      }); 
     } else { 
      $('.textbox:last,.addition:last,.subtraction:last,.replace:last').remove(); 
      $('.addition:last,.subtraction:last').removeAttr('disabled'); 
     } 
    });  
}(jQuery)); 

Mój kod działa poprawnie. Próbuję tylko usunąć ostrzeżenia JSLint. Nie rozumiem, dlaczego JSLint udziela mi ostrzeżenia undeclared 'jQuery' na linii }(jQuery)); (ostatnia linia).

UPDATE
Deklarowanie jQuery jako zmienna globalna otworzyło ostrzeżenie.

+0

możliwe duplikat [Jak mogę używać JSLint dla segmentu kodu, który zależeć s na JQuery?] (http://stackoverflow.com/questions/3920012/how-can-i-use-jslint-for-a-segment-of-code-which-depends-on-jquery) –

Odpowiedz

8

Jeśli używasz jslint.com, trzeba dodać jQuery do zmiennych globalnych w ramach opcji

+0

Dzięki. To wyczyściło ostrzeżenie. Czy wiesz, dlaczego jest to konieczne? – user3421311

+0

np. Jslint analizuje kod bez założeń lub które zmienne są globalne, chyba że ustawisz je w sekcji opcji. –

+0

@ user3421311 Jeśli nie powiesz JSLint, jakie zmienne pochodzą z innego zakresu, to musisz założyć, że nie zadeklarowałeś czegoś poprawnie. Oznacza to, że JSLint przechodzi jeden plik na raz i nie może stwierdzić różnicy między, jeśli masz "var spam =" szynka ";', czy 'sapm =" przyprawiona szynka ";' to błąd ortograficzny lub 'sapm' jest z zakresu nadrzędnego - chyba że powiesz to * i * innym programistom. I dlatego jest użyteczny. – ruffin

0

Jeśli używasz jslint.com, trzeba zastąpić 1st linii kodu. musisz dodać "globalne jQuery" jako linię komentarza. Zobacz tutaj ..

wymienić: (function ($) {

za pomocą: /* globalny jQuery */
jQuery (function() {$ .....

wszystkiego najlepszego.
Puspendu Mondal