0

私はこのhtmlを持っています:

   <a style="display:block; padding:100%; text-decoration: none;" href="http://google.com " class="Jasmin" id="target_site_to_visit">

<span data-app-id="88" class="btn" id="visit_site" style="right:22px; top:65px; padding:5px;z-index: -99999;">VISIT SITE</span>

</a>

そしてこのjquery:

      (function($){
            $('#target_site_to_visit').live('click',function(event){
            event.preventDefault();
           var appName=$('#target_site_to_visit').attr('class');
          $.post('db/update_site_viewed.php',{ name:appName }, function(data){

              throw new Error("AppName: "+appName);

          },'html').error(function(data){

             throw new Error("Error: "+data.responseText);
          });
          document.location.href=$('#target_site_to_visit').attr('href');
      }); })(jQuery);

ボタンがクリックされるたびに問題が発生します。データをデータベースに配置するpostメソッドが実行されます。しかし、それはjqueryの最後の行が存在しない場合にのみ発生します:document.location.href ..リダイレクトは何らかの形でpostに影響を与えます..おそらくpostメソッドを実行することはできません..dbにレコードが挿入されない結果になります(または他のpostメソッドでは実行されません)..それが原因である可能性があります..リダイレクトがpostメソッドの実行に影響を与えるため

4

3 に答える 3

4

これはあなたの問題を解決します

<script type="text/javascript">
        $('#target_site_to_visit').live("click",function(event){
        event.preventDefault();
       var appName=$('#target_site_to_visit').attr('class');
      $.post('db/update_site_viewed.php',{ name:appName }, function(data){

     //    console.log("AppName: "+appName);

      },'html').error(function(data){

       //  console.log("Error: "+data.responseText);
      });
    //  document.location.href=$('#target_site_to_visit').attr('href');
  }); 

ただし、.live()。LIkeの代わりに.on()を使用してください

<script type="text/javascript">
            $(document).on("click",'#target_site_to_visit',function(event){
            event.preventDefault();
           var appName=$('#target_site_to_visit').attr('class');
          $.post('db/update_site_viewed.php',{ name:appName }, function(data){

         //    console.log("AppName: "+appName);

          },'html').error(function(data){

           //  console.log("Error: "+data.responseText);
          });
        //  document.location.href=$('#target_site_to_visit').attr('href');
      }); 
   </script>
于 2012-07-12T12:52:41.580 に答える
1

clickリッスンするイベント(この場合)をliveメソッドに渡す必要があります。

$("#somediv").live("click", function () {
    console.log("you clicked it");
});

また、他の回答者が言ったように、ではonなく使用する必要liveがあります。理由を説明する記事があります:http: //bitovi.com/blog/2011/04/why-you-should-never-use-jquery-live .html

于 2012-07-12T12:52:50.133 に答える
0

イベントの種類を指定していないようです。である必要があり'click'、jQuery 構文に関する私の非常に限られた知識が正しければ、コールバックの前の最初のパラメーターにする必要があります。

安全のために、JavaScript で処理することを意図したリンクにはhref="javascript:void(null);". そうすれば、イベント ハンドラーがイベントのキャンセルに失敗しても、とにかく何も起こりません。また、ユーザーがステータス バーにカーソルを合わせたときに JavaScript リンクが表示される方が、Google へのリンクよりも混乱しません。

于 2012-07-12T12:53:11.397 に答える