You shouldn't have to refer to the same object in different ways,  $
("input:[name='donation_type']") will work for both getting the value
and binding an event.
The "@" before the attribute name was deprecated as of version 1.2

On Feb 18, 9:51 pm, gberz3 <gbe...@gmail.com> wrote:
> Ok, I got it to work using the following:
>
> $("#chargetotal").change(updateDonationTotal);
> $("input:[name='donation_type']").change(updateDonationTotal);
>
> I mistakenly posted chargetotal as the radio when it was actually a
> text field.  That said, what is the difference between the following
> items:
>
> var donation_type = $("input:[...@name:donation_type]:checked").val();
> $("input:[name='donation_type']").change(updateDonationTotal);
>
> It doesn't seem very intuitive to have to refer to the same item in
> different ways in order to get different results.  I should be able to
> say "GET OBJECT where NAME EQUALS" regardless of whether I'm looking
> for its value or to bind to one of its methods.  Can someone shed some
> light on why I must call each of these methods on the input in the
> different manners?
>
> Thanks.
> On Feb 18, 7:10 pm, mkmanning <michaell...@gmail.com> wrote:
>
> > try:
> > $("input:[...@id:chargetotal]").change(updateDonationTotal);
>
> > On Feb 18, 1:55 pm, gberz3 <gbe...@gmail.com> wrote:
>
> > > Hi All,
>
> > > I'm having a bit of a problem with selectors and binding in jQuery.
> > > Basically I want to do 2 things:
>
> > > 1) create a javascript method callable by name that updates a div
> > > 2) bind that method to a set of radio buttons that runs the method on
> > > change
>
> > > It seems that none of the examples explicitly cover instances where
> > > you roll your own methods.  They all assume "function(){}" which I
> > > personally consider messy.
>
> > > That said, I have the following code thus far:
>
> > >                 <script type="text/javascript">
>
> > >                         $(document).ready(function(){
> > >                                 function updateDonationTotal(){
> > >                                         var amount = 
> > > $('#chargetotal').val();
> > >                                         var multiplier = 0;
> > >                                         var total = 0;
> > >                                         var donation_type = 
> > > $("input:[...@name:donation_type]:checked").val
> > > ();
> > >                                         var message = "";
> > >                                         //it's gonna be one of:   
> > > donation_general, donation_stop_tab,
> > > donation_pipe
>
> > >                                         switch(donation_type){
> > >                                                 case 'donation_general': 
> > > {multiplier = 1; break}
> > >                                                 case 'donation_stop_tab': 
> > > {multiplier = 500; break}
> > >                                                 case 'donation_pipe': 
> > > {multiplier = 100; break}
> > >                                         }
>
> > >                                         total = amount * multiplier;
>
> > >                                         message = "&nbsp;  x " + 
> > > multiplier + " = " + total;
> > >                                         
> > > $("#donation_total").html(message);
> > >                                         console.log(message);
> > >                                 };
>
> > >                                 
> > > $("input:[...@id:chargetotal]").change(updateDonationTotal(););
>
> > >                         });
>
> > >                 </script>
>
> > > The method 'updateDonationTotal' works fine.  However, I receive
> > > errors when trying to bind the method in various ways to the radio
> > > buttons.  I've tried 'bind', 'click', 'change'...all error out.
> > > Please advise.
>
> > > Best!

Reply via email to