AJQuery调用后,JQuery停止工作(ASP.NET MVC)

时间:2010-09-22 07:22:31

标签: asp.net-mvc ajax jquery

大家好我知道这是ASP.NET MVC中的一个已知问题,基本上我在这里的是一个带有类别(红色,蓝色,绿色)的照片库。

当我选择一个类别,说“红色”时,它会进行ajax调用并加载带有红色产品照片的页面。当我点击其中一张照片时,我希望它会被放大(灯箱有点效果)。我使用一个名为fancybox的jQuery插件。

但是你们都知道jQuery使用带有jquery的动态加载内容,但实际上并不适用于ASP.NET MVC。所以我将fQuerybox的jQuery调用添加到ajax.success中。

但由于它是一个插件,函数$(“。fancybox”)。fancybox()没有注册,并说它不是一个有效的javascript函数。我怎样才能解决这个问题,这样我可以在ajax调用之后做图像放大?谢谢!

   $(document).ready(function() {
        $("select#Colors").change(function() {
            var color = $("#Colors > option:selected").attr("value");
            var tempnric = $(".tempnric").attr("value");
            $("#ProductsDiv").hide();
            $('#ajaxBusy').show();
            $.ajax({
                type: "GET",
                contentType: "application/json; charset=utf-8",
                url: "/FindProducts/" + color,
                data: "{}",
                dataType: "json",

                success: function(data) {
                    $('#ProductsDiv > div').remove(); // remove any existing Products
                    if (data.length > 0) {
                        var options = '';
                        for (p in data) {
                            var product = data[p];
                            options += "<a href='/GetPhotoSet/" + product.PhotoID + "' class='fancybox load fade'><img src='/GetPhotoSet/" + product.PhotoID + "'/></a>";

                        }
                        $("#ProductsDiv").html(options);
                        $('#ajaxBusy').hide();
                        $("#ProductsDiv").show();

                    } else {
                        $("#Products").attr('disabled', true).html('');
                        $("#ProductsDiv").append('<div>(None Found)</div>');
                    }
                }
            });

        });
    });

这是其余的代码,但是当我点击图片时,它会打开一个新的浏览器..

1 个答案:

答案 0 :(得分:1)

在你的document.ready call之前,把这行代码放在:

 var $j = jQuery.noConflict();

然后将所有'$'引用替换为'$ j',您的代码现在应该可以正常工作。

其他一些javascript和jQuery脚本之间可能存在冲突,因此您的document.ready未被发现。这是解决问题的最快方法。如果您有野心,可以使用FireFox的错误控制台等工具找出正在发生的事情。