2015-10-17 67 views
1

我決定學習haxe來編譯JavaScript,我面對的問題是關於如何使用這種語言實現普通JavaScript的功能的信息和示例很少。也許有人可以幫助我理解我如何利用jQuery的每個功能,因爲它似乎不工作。它在編譯「js.html.Node沒有字段寬度」時給了我一個錯誤「Haxe和jQuery Extern函數庫的每個函數

這裏是代碼。

import js.Lib; 
import js.Browser; 
import jQuery.*; 

class Main { 

    static private var _jqSlider:JQuery; 

    static public function main():Void { 

     new JQuery(function():Void { //when document is ready 
      myFunc(); 
     }); 

    } 

    static private function myFunc() { 
     _jqSlider = new JQuery("aSlider"); 

     _jqSlider.children().each(function(i,ele) { 
      trace(ele.width()); 
     }); 
    } 
} 

謝謝。 我正在使用這些jQuery lib http://lib.haxe.org/p/jQueryExtern,我試過trace(JQuery.cur.width());給我的如下因素類沒有現場CUR,

static private function myFunc() { 
     _jqSlider = new JQuery("aSlider"); 

     trace("hello"); // works fine as console.log("hello") 

     _jqSlider.children().each(function(i,ele) { 
      var ele = new JQuery(ele); 
      trace("hello"); // Action Ignored 
      trace(ele.width()); // Action Ignored 
     }); 
    }' 

這是它輸出的代碼爲JavaScript

(function (console) { "use strict"; 
    var Main = function() { }; 
    Main.main = function() { 
     $(function() { 
      Main.myFunc(); 
     }); 
    }; 
    Main.myFunc = function() { 
     Main._jqSlider = $("aSlider"); 
     console.log("hello"); 
     Main._jqSlider.children().each(function(i,ele) { 
      var ele1 = $(ele); 
      console.log("hello"); 
      console.log(ele1.width()); 
     }); 
    }; 
    Main.main(); 
    })(typeof console != "undefined" ? console : {log:function(){}}); 
+0

你在使用什麼模塊加載器?你如何修改jQuery以符合ES6模塊? –

回答

4

這是相當一個jQuery的問題。

根據jquery docs,ele確實是一個普通的Element,而不是JQuery對象,因此沒有width()方法。

您可以創建一個新的jQuery對象是這樣的:

var $ele = new JQuery(ele); 
trace($ele.width()); // should work 

或使用JQuery.cur,這將轉化爲$(this)在JS。

trace(JQuery.cur.width()); 

http://api.haxe.org/js/JQuery.html

據我所知,這兩種解決方案是等效的,後者是更簡潔,可能更「jQuery的狀」。

雖然您似乎正在使用與official one不同的jQuery外部函數,因爲您導入jQuery.*而不是js.JQuery

如果是這樣,請提供更多關於您使用的lib的信息。

+0

我在問題中增加了一些信息,對不起,我仍然沒有覺得它直觀地將代碼添加到評論空間中。 –

+0

你應該使用標準庫中的官方JQuery extern。 我相信'jQueryExtern'已被棄用,現在Andy維持std的 – clemos