"Absolutely retarded"?  Really?

The correct way to invoke a callback, assuming someone wanted to
define a 30-line function in-line like that, would be

   $(function() {
       $("#slider").slider({
          ... ,
          function(event, ui){
            // 30-lines, in-line
          }
       });
    });

You don't "name" the function you're defining in the pass-in.

**--**  Steve



On Sep 15, 6:29 pm, Clay <[email protected]> wrote:
> Found the solution, when firing a callback function, you have to call
> the function from an new function like so:
>
> $("#slider").slider({
>         value: 5,
>         min: -15,
>         max: 15,
>         step: .25,
>         slide: function() { calculate(event, ui) }
>
> });
>
> To me this is absolutely retarted, and i think the UI team may want to
> look into this.
>
> On Sep 15, 9:45 am, Clay <[email protected]> wrote:
>
> > Maybe it's my programming error, or maybe not, but either way i could
> > use some help.
>
> > I have an 
> > app:http://www.toolwebshop.com/_calorie_tracker/website/mynumber.php
> > that updates multiple elements using the jquery UI slider. The
> > function is nested within the slider with this code (works btw):
>
> > <code>
> > <script type="text/javascript">
> >         /* <![CDATA[ */
> >                 $(document).ready(function() {
> >                         $("#slider").slider({
> >                                 value: <?php if($_POST['lose']) { echo 
> > $_POST['lose']; } else
> > { echo "0"; }; ?>,
> >                                 min: -15,
> >                                 max: 15,
> >                                 step: .25,
> >                                 slide:
> >                                 function calculate(event, ui){
> >                                         profile         = new Object();
> >                                         profile.n       = $("#name").val();
> >                                         profile.w       = 
> > $("#weight").val();
> >                                         profile.h       = 
> > $("#height").val();
> >                                         profile.a       = $("#age").val();
> >                                         profile.s       = $("#sex").val();
> >                                         profile.m       = 
> > $("#activity").val();
>
> >                                         $("#lose").val(ui.value);
>
> >                                         if( profile.s == "M" )        { 
> > profile.bmr = (66 + (6.23 * (profile.w -
> > ui.value)) + (12.7 * profile.h) - (6.8 * profile.a)) * profile.m; }
> >                                         if( profile.s == "F" )        { 
> > profile.bmr = (655 + (4.35 * (profile.w
> > - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; }
> >                                         if( profile.s == "P" )        { 
> > profile.bmr = (1155 + (4.35 * (profile.w
> > - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; }
>
> >                                         
> > $("#bmr").val(Math.round(profile.bmr));
>
> >                                         $(".calper").each(function(){
> >                                                 calper = 
> > parseInt($(this).children(".percent").text())/100;
> >                                                 
> > $(this).children(".number").text(Math.round(profile.bmr *
> > calper));
> >                                         });
>
> >                                         if( ui.value < -10 && 
> > $(".warning:hidden")){
> >                                                 
> > $(".warning").fadeIn("slow");
> >                                         }
> >                                         if( ui.value > -10 && 
> > $(".warning:visible")){
> >                                                 
> > $(".warning").fadeOut("slow");
> >                                         }
> >                                         if( ui.value == 0 )     { $(".lose 
> > label").text("Maintain
> > Weight:"); }
> >                                         if( ui.value < 0 )   { $(".lose 
> > label").text("Lose LBS:"); }
> >                                         if( ui.value > 0 )   { $(".lose 
> > label").text("Gain LBS:"); }
> >                                 }
> >                         });
> >                 });
> >         /* ]]> */
> >         </script>
> > </code>
>
> > However, when i try to remove the function to make it accessible
> > outside of the slider() the callback does not fire on mouse event:
>
> > <code>
> > function calculate(event, ui){
> >                                 profile         = new Object();
> >                                 profile.n       = $("#name").val();
> >                                 profile.w       = $("#weight").val();
> >                                 profile.h       = $("#height").val();
> >                                 profile.a       = $("#age").val();
> >                                 profile.s       = $("#sex").val();
> >                                 profile.m       = $("#activity").val();
>
> >                                 $("#lose").val(ui.value);
>
> >                                 if( profile.s == "M" )        { profile.bmr 
> > = (66 + (6.23 * (profile.w -
> > ui.value)) + (12.7 * profile.h) - (6.8 * profile.a)) * profile.m; }
> >                                 if( profile.s == "F" )        { profile.bmr 
> > = (655 + (4.35 * (profile.w -
> > ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; }
> >                                 if( profile.s == "P" )        { profile.bmr 
> > = (1155 + (4.35 * (profile.w
> > - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; }
>
> >                                 $("#bmr").val(Math.round(profile.bmr));
>
> >                                 $(".calper").each(function(){
> >                                         calper = 
> > parseInt($(this).children(".percent").text())/100;
> >                                         
> > $(this).children(".number").text(Math.round(profile.bmr *
> > calper));
> >                                 });
>
> >                                 if( ui.value < -10 && $(".warning:hidden")){
> >                                         $(".warning").fadeIn("slow");
> >                                 }
> >                                 if( ui.value > -10 && 
> > $(".warning:visible")){
> >                                         $(".warning").fadeOut("slow");
> >                                 }
> >                                 if( ui.value == 0 )     { $(".lose 
> > label").text("Maintain Weight:"); }
> >                                 if( ui.value < 0 )   { $(".lose 
> > label").text("Lose LBS:"); }
> >                                 if( ui.value > 0 )   { $(".lose 
> > label").text("Gain LBS:"); }
> >                         }
>
> >                         $("#slider").slider({
> >                                 value: <?php if($_POST['lose']) { echo 
> > $_POST['lose']; } else
> > { echo "0"; }; ?>,
> >                                 min: -15,
> >                                 max: 15,
> >                                 step: .25,
> >                                 slide: calculate(event, ui)
> >                         });
> > </code>
>
> > I did a test with a basic function giving an alert, and when the page
> > would first load the function would be called, however, after i
> > started moving the slider, it wouldn't fire. Any ideas? Any other
> > suggestions to clean up my code?
>
> > THANKS!
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery UI" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/jquery-ui?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to