2016-07-30 8 views
0

ich eine Funktion wie dieses:Warum diese Funktion nicht aufgerufen wird, wenn jQuery Plugin Aufruf

function typeahead_fn(combo){ 

    $(combo).typeahead({ 
     highlight:true, 
     hint: false, 
     minLength: 0, 
     autoselect: false 
    }, 
    { 
     name: "bh", 
     source: wrapper, 
     displayKey: 'itemName', 
     templates: { 
     // empty: [ 
     //  '<div class="empty-message">', 
     //  'no results found', 
     //  '</div>' 
     // ].join('\n'), 
      suggestion: function(data){ 
      return '<div class="comboRow"> <div class="comboColumn comboColumnEmpty"></div><div class="comboColumn comboColumnItemCode">' + data.itemCode + '</div> <div class="comboColumn comboColumnEmpty"></div> <div class="comboColumn comboColumnItemName">' + data.itemName + '</div> </div>'; 
      } 
     }, 
     limit: 1000 
    }); 
} 

Wenn ich es so nennen dann funktioniert es gut:

typeahead_fn('.itemCombo'); 

Wenn ich seine Referenz zu übergeben Plugin funktioniert es nicht:

$("#tbl").editable({typeahead: typeahead_fn('.newItemCombo')}); 

Update:

Wenn ich es in einer anderen Art und Weise, wie dies tun, dann funktioniert es:

$("#tbl").editable({typeahead: function typeahead_fn(){ 

     $('.newItemCombo').typeahead({ 
      highlight:true, 
      hint: false, 
      minLength: 0, 
      autoselect: false 
     }, 
     { 
      name: "bh", 
      source: wrapper, 
      displayKey: 'itemName', 
      templates: { 
       // empty: [ 
       //  '<div class="empty-message">', 
       //  'no results found', 
       //  '</div>' 
       // ].join('\n'), 
       suggestion: function(data){ 
        return '<div class="comboRow"> <div class="comboColumn comboColumnEmpty"></div><div class="comboColumn comboColumnItemCode">' + data.itemCode + '</div> <div class="comboColumn comboColumnEmpty"></div> <div class="comboColumn comboColumnItemName">' + data.itemName + '</div> </div>'; 
       } 
      }, 
      limit: 1000 
     }); 
     } 

Antwort

1

Wenn Sie mit dem „Referenz“ übergeben möchten, sollten Sie die Klammer und das Argument nach dem Funktionsnamen wie entfernen:

$("#tbl").editable({typeahead: typeahead_fn}); 

Wenn Sie das Argument zu übergeben möchten, sollten Sie Ihren Anruf in einer anonymen Funktion verwenden und wickeln die durch „Referenz“ übergeben wird:

$("#tbl").editable({typeahead: function() { typeahead_fn('.newItemCombo'); }}); 
+0

Nein, Sie haben mich völlig missverstanden. Hier ist typeahead eine Option in meinem Plugin – Vishal

+0

Ho, dann sollten Sie diese Informationen in der Frage hinzufügen und teilen Sie den Code Ihres Plugins relativ zu dem, was Sie mit dieser Option tun. – HiDeo

+0

Ich denke, es gibt keinen Fehler in Plugin. Die Art, wie ich den Parameter an das Plugin übergebe, ist falsch. Bitte sehen Sie sich die aktualisierte Frage an. – Vishal