Titanium Community Questions & Answer Archive

We felt that 6+ years of knowledge should not die so this is the Titanium Community Questions & Answer Archive

Use of Jquery

Hi,
I had a native iPhone App calling an RSS and showing data plus Details in native datagrid. All I had used was jquery.jgfeed and jquery.js. My app was completed in less then 100 lines of code in less then two hours. How do I do the same with the 0.9.x and 1.0 SDK? I have spend more then few days just to figure out where to start from!
The whole idea of using titanium is that I do not have to learn anything new. I have been working with jquery for quite some time now and I know all the AJAX, JSON and other APIs on top of my head, do I have to start learning new XHR apis of titanium now?
What is the best way to port my app from older sdk to newer one?
I have already seen http://support.appcelerator.net/discussions/support/1940-how-to-use…
But please please please do not remve jquery support.

— asked March 9th 2010 by Sapan Parikh
  • css
  • external
  • html
  • javascript
  • jquery
0 Comments

11 Answers

  • Accepted Answer

    You can actually use jQuery if you declare empty variables before including the library. Obviously i don't think it is possible or neccessary to use the DOM - functions but utilitys work just fine.

    Just prefix the library with something similar to this, i used an older jquery library because this seems to work in 1.3.2:

    var window = {};
    var document = {
    getElementById: function(){},
    createComment: function(){},
    documentElement: {
    insertBefore: function(){},
    removeChild: function(){}
    },
    createElement: function(elm){
    return obj = {
    innerHTML: '',
    appendChild: function(){},
    getElementsByTagName: function(){
    return {};
    },
    style: {}
    },

    }
    

    };
    var navigator = {
    userAgent: ""
    };
    var location = {
    href: ''
    };

    Have fun trying this out.

    — answered May 20th 2010 by Julian Weimer
    permalink
    0 Comments
  • Re the question of whether jQuery 1.4 is supported: you can use basically any JS library you want in a WebView. Outside of a WebView, you can use basically any JS library that does not require the DOM (like json2.js, etc.)

    Re the larger point: Libraries like jQuery which assume there is a "document" object (and "navigator", etc. – those things available in a web browser) will not function outside of a WebView in Titanium Mobile SDK 1.0.

    Personally, I wouldn't think this to be so much of a deal breaker. I would think the trade-off is totally one-sided in favor of moving to 1.0: massive improvements in native compatibility and performance, versus needing to write a few lines of your own AJAX code using the built-in Titanium.Network.HTTPClient. Is it really so hard to replace the $.ajax shortcuts that jQuery provides? The "biggest" part an ajax call is writing the callback function – something you need to do in that $.ajax call as well as when using HTTPClient.

    On the other hand, if it is a deal breaker, you can put everything in a WebView and thereby continue the model that was used in 0.8.x. But be sure to watch Kevin's video (he mentions it above) because some things have changed, like you can't create native controls on the WebView.

    Or you can stick with 1.0 and look for a third-party ajax library that doesn't rely on the DOM, like jx – of course you'd still need to change your code, but it might be simpler than writing all your own AJAX handling.

    — answered March 10th 2010 by Bill Dawson
    permalink
    0 Comments
  • jQuery is still supported in web views, so if you'd like to develop using mostly web technologies that's cool with us. It's just going to be a little different in 1.0, since we want to empower real native apps moreso than "native web pages".

    I did a webinar on moving from 0.8 to 1.0 which is available online here:

    http://vimeo.com/9960118

    — answered March 9th 2010 by Kevin Whinnery
    permalink
    0 Comments
  • @Clint Tredway
    How can we import jQuery.js in app.js?
    Before I used to use tag in a webview to do that and then used to write native controls in that webview. I have seen some include api but they do not work in including external js.

    — answered March 9th 2010 by Sapan Parikh
    permalink
    0 Comments
  • Can I still choose to use Jquery/JqueryUI and not include any extra titanium stuff?

    — answered January 20th 2012 by Kevin McCaughey
    permalink
    0 Comments
  • This is problem for all of us who have developed apps using JQuery to make AJAX calls in 0.8. Is all that work rendered useless in 0.9? This has got to be a dealbreaker for a lot of guys. Personally, this was what made it so attractive to me.

    — answered March 9th 2010 by Nish Desai
    permalink
    0 Comments
  • This should still be usable. Are any of you getting errors when trying it? is not working? If its not, post some code and we will try to reproduce it.

    — answered March 9th 2010 by Clint Tredway
    permalink
    0 Comments
  • KitchenSink 1.0.x on github has jquery 1.3.2 included. Does Titanium Mobile support jquery 1.4.x ?

    — answered March 10th 2010 by null null
    permalink
    0 Comments
  • @Bill Dawson <br/>
    Well you are right, the advantages are so higher that we will keep using the native way, I also used Titanium.Network.HTTPClient and it was not many lines of code as well. Only thing is it took me some time to find and learn it. Anyways, I have started using the native APIs and things should go pretty swiftly.

    — answered March 10th 2010 by Sapan Parikh
    permalink
    0 Comments
  • This thread is old but the most popular when I do any search online. So I'll post my query here (haha!).
    Is the jQuery library included with Appcelerator natively supported in Mobile now? Can I include jQuery 'DOM' and utility commands and expect them to perform?
    Cheers!

    — answered July 27th 2011 by Dooley P
    permalink
    0 Comments
  • That's what I want to clarify, I do not want to build web pages, I want to create native apps but while I do that there are smaller tasks like making AJAX calls or executing.getJSON or using for-each loops which comes in pretty handy for example I had following code
    $.ajax({
    type: "POST",
    url: "PersonService.asmx/GetPerson",
    data: "some=data",
    dataType: "json",
    success: function(JSONObj) {
    //create native data grid using JSONObj here
    }
    });

    Can I still use the code above to populate a native grid?

    — answered March 9th 2010 by Sapan Parikh
    permalink
    0 Comments
The ownership of individual contributions to this community generated content is retained by the authors of their contributions.
All trademarks remain the property of the respective owner.