2012-02-26 3 views
0

を設定していないjQueryの変数は、私はこのjQueryのコードを持っている私の文書の上部に

jQuery.ajax({ 
      url: frm.attr('action'), //your server side script 
      data: frm.serialize(), //our data 
      type: 'POST', 
      success: function (data) { 
      alert(position.left); 
      }, 

問題がある警告ボックスことその位置で表示されていません。私はalert('something');でテストしており、正常に動作します。

私の本当のAJAX呼び出し:クリック機能で

jQuery.ajax({ 
    url: frm.attr('action'), //your server side script 
    data: frm.serialize(), //our data 
    type: 'POST', 
    success: function (data) { 
    $('.warning').fadeIn(500).css({display: 'block', 
     position: 'absolute', 
     left: position.left + 50, 
     top: position.top - 25 
    }).append('asdasdsadsad'), 
    $(ri).next('.ratingcount').html('asdasdasd') 
    }, 
    error: function (jxhr, msg, err) { 
     alert(msg); //something went wrong. 
    } 
}); 

答えて

1

あなたはクリックイベントハンドラとして使用する匿名関数の内部でpositionを宣言。つまり、アラートしようとするとスコープには入りません(ReferenceErrorを取得します)。

あなたは、イベントハンドラ関数のposition外に宣言する必要があります。positionがするので、クリックイベントハンドラは、ときにalert実行実行されていない場合しかし、あなたはまだエラーになります

var position; 
$('.rateit').click(function(){ 
    position = $(this).position(); 
}); 

undefinedであるため、leftプロパティはありません。

+0

まだ位置はajax呼び出しで設定されていません。 –

+0

私は実際のAjaxコールで質問を更新しました。 div警告の位置は設定されていません。 –

+0

@Railsbeginnerこれは、あなたの 'position'変数がユーザーからのイベント(要素をクリック)に応答して設定され、コードがロードされるとただちにAJAX呼び出しが呼び出されるためです。 –

3

は、位置はローカル変数なので、これだけの範囲で表示されます。

これを試してみてください:

var position; 

$('.rateit').click(function(){ 
    position = $(this).position(); 
}); 
+0

私は完全なajax呼び出しで質問を更新しました。警告divの位置は設定されていません。 –

+0

このajaxが呼び出されたときは?あなたはAjaxコールの前に設定位置を設定する必要があります。 –

+0

または '.rateit'要素をクリックするとajax関数が呼び出されます。 –

0

あなたの変数は$内で定義されているので、私はだ)(クリックしてください。( 'rateit。')。それを試してみてください。

var position; 

$('.rateit').click(function(){ 
position = $(this).position(); 
}); 
関連する問題