2013-07-18 3 views
2

Я новичок в JQuery, и было интересно, как бы я получить доступ к $ скрыто за пределами этой функции: $ (это) .hide (500, функция()Просить переменной вне функции

HTML

<div class="fl person"> 
    <input type="hidden" name="userSaved" value="1" /> 
    <img src="..." class="circle-mask" /> 
</div> 

<div class="fl person"> 
    <input type="hidden" name="userSaved" value="2" /> 
    <img src="..." class="circle-mask" /> 
</div> 

JQuery

<script> 
$("div.person img").click(function() {  
    $(this).hide(500, function() { 
     $(this).parent("div").empty(); 
     $(".main_page").appendTo("div.main_page").addClass("fl person"); 
     var saved_id_user_who_voted = $hidden = $(this).siblings('input'); 
    }); 

    /* attach a submit handler to the form */ 
    var saved_id_user_who_voted_val = "<?php echo $_SESSION['id']; ?>"; 

    /* stop form from submitting normally */ 
    event.preventDefault(); 

    /* Send the data using post and put the results in a div */ 
    $.ajax({ 
     url: "saveSavedUserToDatabase.php", 
     type: "post", 
     data: {saved_id_user_who_voted:saved_id_user_who_voted_val, saved_id_user_voted_on:saved_id_user_voted_on_val} 
    }); 
}); 
</script> 

Я хотел бы быть может получить доступ к saved_id_user_who_voted за пределами текущей функции, чтобы я мог опубликовать ее с помощью .ajax - сейчас это не в области видимости.

Любая помощь приветствуется.

+1

Передайте ему как параметр вашей функции? – tymeJV

+1

удалите 'var' из' saved_id_user_who_voted' в функцию 'hide'. Затем он будет использовать тот, который находится во внешней области, вместо создания нового в пределах области функции. – taldonn

+0

Возможный дубликат [Доступ к переменным из других функций без использования глобальных переменных] (http://stackoverflow.com/questions/407048/accessing-variables-from-other-functions-without-using-global-variables) –

ответ

1

Выполнение запроса AJAX в обратном вызове hide. Или объявите переменную вне обратного вызова hide.

$("div.person img").click(function() { 
    $(this).hide(500, function() { 
     $(this).parent("div").empty(); 
     $(".main_page").appendTo("div.main_page").addClass("fl person"); 
     var saved_id_user_who_voted = $hidden = $(this).siblings('input'); 

     /* attach a submit handler to the form */ 
     var saved_id_user_who_voted_val = "<?php echo $_SESSION['id']; ?>"; 

     /* stop form from submitting normally */ 
     event.preventDefault(); 

     /* Send the data using post and put the results in a div */ 
     $.ajax({ 
      url: "saveSavedUserToDatabase.php", 
      type: "post", 
      data: { 
       saved_id_user_who_voted: saved_id_user_who_voted_val, 
       saved_id_user_voted_on: saved_id_user_voted_on_val 
      } 
     }); 
    }); 
}); 
+0

Кажется, что я делаю так, как будто это делает «Uncaught TypeError: Illegal invocation». – PaulEx10

+0

move event.preventDefault() вне обратного вызова – sdespont

+0

@ PaulEx10 Этот ответ исправил вашу проблему или нет? – sdespont