fancybox在ajax中无法正常工作

时间:2013-05-27 14:45:04

标签: jquery ajax fancybox

编辑代码请重新审核。 我试图在点击一个链接后使用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);
    });
});

2 个答案:

答案 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,以便仅销毁当前单击元素的绑定。