编辑代码请重新审核。 我试图在点击一个链接后使用ajax测试一个值后显示fancybox,但是fancybox一直在消失,并且因为它在循环中的任何解决方案而一直显示出来?
$(document).ready(function () {
$("a.add_to_cart[pro_id]").click(function (e) {
e.preventDefault();
var pro_name = $(this).attr("pro_name");
var pro_id = $(this).attr("pro_id");
var qst = "?pro=" + pro_id;
var ajax = false;
ajax = new XMLHttpRequest();
ajax.open("get", "ajax/check_exists.php" + qst);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
var result = ajax.responseText;
if (result == 'product in cart') {
alert(result);
} else {
$("a.add_to_cart[pro_id=" + pro_id + "]").fancybox({
'transitionIn': 'elastic',
'transitionOut': 'elastic'
}).trigger('click');
}
}
}
ajax.send(null);
});
});
答案 0 :(得分:1)
只需在应用fancybox后立即添加点击:
$("a.add_to_cart").fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic'
}).click();
答案 1 :(得分:1)
您需要解除绑定事件以防止递归点击触发:
$("a.add_to_cart").unbind("click");
$("a.add_to_cart").fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic'
}).click();
但是你应该尝试分离元素,因为unbind
会破坏你add_to_cart
类所有元素的绑定。
尝试为元素和选择器设置id
而不是class
,以便仅销毁当前单击元素的绑定。