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 方法不执行).. 这可能是原因..因为重定向确实影响 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');
  }); 

但是使用 .on() 而不是 .live().Like

<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 回答