2016-12-27 17 views
0

これは簡単なテストページです。問題は、アンカータグの最初のクリックでは値が返されますが、2回目にクリックするとAjaxの動作が停止するようです。どうすれば解決できるか教えてください。ありがとう!Jquery Ajax php - .one関数が正しく動作しない

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
<style> 

</style> 
</head> 
<body> 
<script> 
$(document).ready(function() { 
    $("a").one('click', function(e) { 
     $.ajax({ 
     type: 'GET', 
     data: { 
     play: $(this).attr("href") }, 
     success: function(msg) { 
      //alert(msg); 
      $("#playarea").append(msg); 
      } 
     }); 
    e.preventDefault(); 
    }); 
}); 
</script> 

<div><a id="run1" href="link1">Test1...</a></div> 
<div><a id="run1" href="link2">Test2...</a></div> 
<div><a id="run1" href="link3">Test3...</a></div> 
<div><a id="run1" href="link4">Test4...</a></div> 
<div><a id="run1" href="link5">Test5...</a></div> 

<div id="playarea"></div> 

</body> 
</html> 
+0

あなたは 'doone()'とは何と思いますか? – j08691

+0

私はあなたが '.on()'を意味すると思っています。http://api.jquery.com/on/ –

+0

".on"を使うと、リンクをクリックするたびに(msg)の値を返します。だから私のケースでは ".on"は問題を解決しません... – Devilix

答えて

1

one()は、それを取り外しワンクリックのクリックイベントを添付しますので、あなたは代わりに.one()on()を使用する必要があります。

.one()説明:要素のイベントにハンドラを接続します。ハンドラは、各イベントタイプごとに最大で1回実行されます。

$("a").on('click', function(e) { 
    $.ajax({ 
    type: 'GET', 
    data: { 
    play: $(this).attr("href") }, 
    success: function(msg) { 
     //alert(msg); 
     $("#playarea").html(msg); 
     } 
    }); 
    e.preventDefault(); 
}); 

注:古い結果が代わりにappend()html()を使用無効にしたい場合。 これが役立つことを願っています。

+0

私が.onを使用すると、各クリックで繰り返し結果が得られます.... – Devilix

+2

'one()を使用して結果を一度も取得したくない'また、毎回' on() 'を使うのではないのですか?申し訳ありませんが、私はあなたの望む行動を正確に理解することはできません.. –

+0

ここを見てくださいhttp://fb03.netsons.org/ajaxtest.php 少しのPHPの部分があるので私はjsfiddleを使用できません... リンク上でもっと多くの時間と結果を参照してください。 – Devilix

関連する問題