Almost got it only one problem now. How do I get the specific div
details that was hidden on document load to show again?

JQUERY CODE:
<script type="text/javascript">
         $(function() {
                $.ajax({url: 'tiydschedule.xml',
                                type: 'GET',
                                dataType: 'xml',
                                timeout: 1000,
                                error: function(){
                                alert('Error loading XML document');
                        },
                        success: function(xml){
                               $('show',xml).each(function(id){
                                        var date = $('date',this).text();
                                var dayofweek = $('dayofweek',this).text();
                                var image = $('image',this).text();
                                var title = $('title',this).text();
                                var description = $('description',this).text();
                                var filename = $('filename',this).text();
                                var guests = $('guests',this).text();
                                var specialoffer = 
$('specialoffer',this).text();
                                var specialofferproductid = $
('specialofferproductid',this).text();
                        var divthumbnails = '<div><h4>'+dayofweek+'</h4><p><img
src="/images/weekly_guide/'+image+'" class="today" width="105"
height="75"/></p></div>';
                        var divdetails = '<div 
id="'+dayofweek+'"><div><h4>'+date
+'</h4></div><div><a href="/media/'+filename+'"><img src="/images/
weekly_guide/'+image+'" /></a></div><h2>'+title+'<br/><a href="/
media/'+filename+'">watch now&#187;</a></h2><p>'+description+'</
p><h3>Todays Offers:</h3><p><ul><li><a href="/shopping/
product_detail.cfm/itemid/'+specialofferproductid+'">'+specialoffer+'</
a></li></ul></p></div>';
                        $('.wkguidedays').append(divthumbnails);
                        $('.wkguidetoday').append(divdetails).hide();
                       });
                        }
                });
                $('.wkguidetoday').find("[EMAIL PROTECTED]").show();
         });

</script>

I am loading all the data when the document loads and appending to div
classes(".wkguidedays and .wkguidetoday"). I am then hiding the
".wkguidetoday" class after appending the divdetails variable to it.
However, I want the first of the divdetails (div id="monday"...)
within the ".weguidetoday" class to show up first;

This code is not working for me:
$('.wkguidetoday').find("[EMAIL PROTECTED]").show();

How do I get the first one to show up after initially hiding entire
".wkguidetoday" class?

Thanks!



On May 14, 6:58 pm, chillstroll <[EMAIL PROTECTED]> wrote:
> Jake,
> I will try your suggestions out tomorrow and let you know.
>
> Thanks for the detailed response..Very helpful.
>
> On May 14, 4:59 pm, "Jake McGraw" <[EMAIL PROTECTED]> wrote:
>
> > Couple of things:
>
> > 1. "this" is automatically cast to which ever context you're using it in, in
> > your case, since you haven't escaped any quotations, when the inline script
> > is run, you're operating within the context of the anchor, <a>, element so
> > the anchor gets passed to the getShow() function, which explains why nothing
> > shows.
>
> > 2. Even if you had properly escaped the single quotes and included the
> > correct "this" when building your anchors, you would have passed an object
> > reference. This reference would not be properly passed when the html string
> > is parsed and inserted into the document. Therefore, your method of manually
> > building anchors and setting their "onclick" events, all in html, will not
> > work.
>
> > The correct way to do this would be something like:
>
> > Javascript:
> > // All of your code and then...
> > // Notice that I removed the onclick attribute from the anchor tag
> > var divrow = '<div><h4>'+dayofweek+'</h4><p><a href="#"><img
> > src="/images/weekly_guide/'+image+'"class="today" width="105"
> > height="75"/></a></p></div>';
>
> > // Create variable xml to prevent "this" from being overwritten in separate
> > context
> > var xml = this;
> > $('.wkguidedays').append(divrow).find('a:last').click(function(xml){
> >   getShow(xml);
>
> >   // Prevent memory leaks
> >   xml = null;
>
> >   // Prevent propagation
> >   return false;
>
> > });
>
> > So, now that we are properly passing the 'xml' to getShow(), we have to
> > change a couple of things within that function as well. The most glaring
> > issue is the fact jQuery won't accept an object  as a selector, which is
> > what you're trying to do, so you need to instead submit two arguments, in
> > the following form:
>
> > $("selector string",context);
>
> > The following should work:
>
> > function getShow(xml) {
> >   $('date',xml).text();
> >   ...
>
> > }
>
> > Now, having said all of this, you may want to rethink how the whole project
> > is set up. It seems you're delivering a decent amount of information via
> > ajax, could you do this when the document loads and then hide it? For that
> > matter, using anchors with href="#" is not good because of event
> > propagation, you'll have to return false and it's semantically incorrect.
> > Why not bind click events to spans instead?
>
> > Hope this was helpful.
>
> > - jake
>
> > On 5/14/07, chillstroll <[EMAIL PROTECTED]> wrote:
>
> > > Greeting all,
> > > I'm sure this is quite simple; however not sure how do it. I want to
> > > be able to get a specific xml node from the xml document using a
> > > function call after I have initially retrieved it with jquery. Hope my
> > > code will explain better:
>
> > > XML DOC:
> > > <?xml version="1.0" encoding="ISO-8859-1"?>
> > > <schedule>
> > >         <show>
> > >                 <date>Monday, May 14, 2007</date>
> > >                 <dayofweek>Monday</dayofweek>
> > >                 <image>051407.jpg</image>
> > >                 <title>San Antonio Hosts Training for Ministry
> > Conference</title>
> > >                 <description>Text Here</description>
> > >                 <filename>2007-5-14.asx</filename>
> > >                 <guests/>
> > >                 <specialoffer>Names of God bracelet</specialoffer>
> > >                 <specialofferproductid>431</specialofferproductid>
> > >         </show>
> > >         <show>
> > >                 <date>Tuesday, May 15, 2007</date>
> > >                 <dayofweek>Tuesday</dayofweek>
> > >                 <image>051507.jpg</image>
> > >                 <title>Training for Ministry Conference Impacts the Alamo
> > City</
> > > title>
> > >                 <description>More Text Here</description>
> > >                 <filename>2007-5-15.asx</filename>
> > >                 <guests/>
> > >                 <specialoffer>Names of God bracelet</specialoffer>
> > >                 <specialofferproductid>431</specialofferproductid>
> > >         </show>
> > > </schedule>
>
> > > JQUERY CODE:
> > > <script type="text/javascript">
> > >          $(function() {
> > >                 $.ajax({url: 'tiydschedule.xml',
> > >                                 type: 'GET',
> > >                                 dataType: 'xml',
> > >                                 timeout: 1000,
> > >                                 error: function(){
> > >                                 alert('Error loading XML document');
> > >                         },
> > >                         success: function(xml){
> > >                                $('show',xml).each(function(id){
> > >                                         var dayofweek =
>
> > $(this).find('dayofweek').text();
>
> > >                         var image = $(this).find('image').text();
> > >                         var divrow = '<div><h4>'+dayofweek+'</h4><p><a
> > href="#"
> > > onclick="getShow(this);"><img src="/images/weekly_guide/'+image+'"
> > > class="today" width="105" height="75"/></a></p></div>';
> > >                         $('.wkguidedays').append(divrow);
> > >                        });
> > >                         }
> > >                 });
> > >          });
> > >          function getShow(xmlnode) {
> > >                 // do something with xmlnode
> > >                 var date = $(xmlnode).find('date').text();
> > >         var dayofweek = $(xmlnode).find('dayofweek').text();
> > >         var image = $(xmlnode).find('image').text();
> > >         var title = $(xmlnode).find('title').text();
> > >         var description = $(xmlnode).find('description').text();
> > >         var filename = $(xmlnode).find('filename').text();
> > >         var guests = $(xmlnode).find('guests').text();
> > >         var specialoffer = $(xmlnode).find('specialoffer').text();
> > >         var specialofferproductid = $
> > > (xmlnode).find('specialofferproductid').text();
> > >         alert(title);
> > >          }
> > > </script>
>
> > > The first part works fine; however the call to the getShow(xmlnode)
> > > function which I want to receive the passed xml node does not work.
> > > I'm appending <a href="#" onclick="getShow(this);"> to the divrow
> > > variable as I initially loop thru the xmlnodes. Nothing shows up on
> > > the alert.
>
> > > Is there a simpler way to do this? I am on the right track? Thanks for
> > > the help.- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -

Reply via email to