2013-01-20 73 views
0

我的插件創建鏈接,然後調用插件本身的功能。我可以直接操作DOM並使用類似$link.click(function() {...}),但我不希望使用此方法,因爲 -如何創建一個鏈接來調用jquery插件本身的功能

  1. 我的代碼得到了很多更加複雜和
  2. string manipulation is faster

我怎樣才能通過字符串鏈接調用插件的功能?

問題是找到創建插件的實際DOM元素。我不能僅僅使用/設置HTML標識,因爲它可能被頁面用於其他目的,或者可能不是唯一的。我想出了添加一個獨特的類來尋找插件的想法:

// init function of plugin 
init : function(options) { 
    return this.each(function() { 
     var data = $this.data("myPlugin"); 
     if (!data) { 
      data.uniqueClass = 'p' + new Date().getTime() + '_' + Math.random().toString().substring(2); 
      $this.addClass(data.uniqueClass); 
      this.data('myPlugin', data); 
      // generate link 
      $this.html('<a onclick="jQuery(\'.' + data.uniqueClass + '\').myPlugin(\'func\');">Do func</a>'); 
     } 
    }); 
} 

// function that i want to call of my plugin 
func : function() { 
    return this.each(function() { 
     // do stuff 
    }); 
} 

但是有沒有更好的方法來做到這一點?

+0

whay你在jQuery插件中使用內聯突兀腳本嗎?沒有意義 – charlietfl

+0

@charlietfl我用$ this.html(...)寫了一個簡化的表達式,實際上它是一個大表,我通過串聯包含行和單元格的一些循環的字符串來創建它。單元格中的鏈接應該調用具有不同參數的函數。所以,如果我添加一個類的鏈接本身,那麼我將不得不將函數參數保存在HTML中的其他地方,並用例如。元數據插件,我不認爲很漂亮。 – Flo

回答

0

不要這樣做。您獲得的額外性能可以忽略不計。

我不會將此作爲評論發佈,因爲這應該是答案。 不要這樣做!

相關問題