我有这个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方法执行..结果没有记录被插入到db中(或者在其他post方法中没有执行)..是否可能是因为重定向确实影响了post方法的执行
答案 0 :(得分: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>
答案 1 :(得分: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
答案 2 :(得分:0)
您似乎没有指定事件类型。它应该是'click'
,如果我对jQuery语法的知识非常有限,那么它应该是你回调之前的第一个参数。
为了安全起见,我希望有任何由JavaScript处理的链接href="javascript:void(null);"
。这样,即使事件处理程序无法取消事件,也无论如何都不会发生。当用户将鼠标悬停在状态栏上时,用户在状态栏中看到的JavaScript链接也比使用谷歌的链接更容易让人感到困惑。