2010-10-06 5 views
1

J'ai les deux fonctions suivantes et j'ai besoin d'aide pour les déplacer dans un fichier externe.Placement de deux fonctions Jquery personnalisées dans un script externe

$.fn.clearSelect = function() { 
     return this.each(function() { 
      if (this.tagName == 'SELECT') 
       this.options.length = 0; 
     }); 
    } 

    $.fn.addItems = function(data) { 
     return this.each(function() { 
      var list = this; 
      $.each(data, function (index, itemData) { 
       var option = new Option(itemData.Text, itemData.Value); 

       list.add(option); 
      }); 
     }); 
    } 

Y at-il quelque chose de spécial que je devrais faire? J'ai essayé de faire cela par moi-même et j'ai trouvé ce qui suit, mais je reçois le "Uncaught SyntaxError: Unxpected token" ".

(function ($) { 
    clearSelect = function() { 
     return this.each(function() { 
      if (this.tagName == 'SELECT') 
       this.options.length = 0; 
     }); 
    }; 

    addItems = function (data) { 
     return this.each(function() { 
      var list = this; 
      $.each(data, function (index, itemData) { 
       var option = new Option(itemData.Text, itemData.Value); 
       list.add(option); 
      }); 
     }); 
    }; 
})(jQuery); 

Merci

Répondre

2

Votre approche initiale devrait fonctionner ... assurez-vous juste le fichier est inclus après jQuery lui-même. You can test it here.

Une autre option est d'étendre $.fn semblable à votre deuxième tentative, comme ceci:

(function($) { 
    $.fn.extend({ 
    clearSelect: function() { 
     return this.each(function() { 
     if (this.tagName == 'SELECT') this.options.length = 0; 
     }); 
    }, 
    addItems: function(data) { 
     return this.each(function() { 
     var list = this; 
     $.each(data, function(index, itemData) { 
      var option = new Option(itemData.Text, itemData.Value); 
      list.add(option); 
     }); 
     }); 
    } 
    }); 
})(jQuery); 

You can test that version here.

+0

Oui, il semble que cela fonctionne sur votre site de test. Je suppose qu'il y a quelque chose d'autre qui ne va pas sur ma propre page, ce qui l'amène à lancer une nouvelle erreur TypeError: L'objet # n'a pas de méthode 'clearSelect'. Merci quand même pour vôtre aide. – zSynopsis

Questions connexes