Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery问题_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript jQuery问题

Javascript jQuery问题,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,HTML: 说明: 上面的代码应该做的是,当您单击一个锚(使用类img)时,#media photo div中的图像将根据锚的href属性(href是图像的相对路径,它将替换当前img的src属性)更改为新的图像 它在Firefox中工作得很好 在IE中(特别是第8版,我还没有测试旧版本),当你点击锚时,图像会在浏览器中打开 如何在IE中也实现这一点 编辑: 我使用try{}finally{}来确保函数返回false(以防止默认行为),从而解决了这个问题。以下是完整的jQuery代码(我在上面对

HTML:

说明:

上面的代码应该做的是,当您单击一个锚(使用类img)时,#media photo div中的图像将根据锚的href属性(href是图像的相对路径,它将替换当前img的src属性)更改为新的图像

它在Firefox中工作得很好

在IE中(特别是第8版,我还没有测试旧版本),当你点击锚时,图像会在浏览器中打开

如何在IE中也实现这一点

编辑:


我使用try{}finally{}来确保函数返回false(以防止默认行为),从而解决了这个问题。以下是完整的jQuery代码(我在上面对其进行了极大的简化,以避免将人们与无关的东西混淆):

在这方面:

$(document).ready(function() {
    $('.box-content2 a.img').click(function() {
        var path = $(this).attr('href');
        var title = $('img', this).attr('alt');
        var description = jQuery.trim($(this).attr('title'));
        var id = $(this).attr('id');

        if (id != $('#media-photo img').attr('id')) {

            try {

                $('#media-photo img').attr('src', path);
                $('#media-photo img').attr('alt', title);
                $('#media-photo img').attr('id', id);

                $('#content h2:first').text('You Are Viewing "' + title + '"');
                $('title').text('You Are Viewing "' + title + '"');

                if (description.length > 0) {
                    $('#content .box-container:first').removeClass('invisible');
                    $('#content .box-container:first p').text(description);
                } else {
                    $('#content .box-container:first').addClass('invisible');
                }

                var action = '/view/favoriting-form/id/' + id;

                $.get(action, function(data) {
                    if ($('.favoriting').length > 0) {
                    $('.favoriting').replaceWith(data);
                    } else {
                        $('#actions h3').after(data);
                    }
                });

                action = '/view/rating-form/id/' + id;

                $.get(action, function(data) {
                    if ($('.rating').length > 0) {
                        $('.rating').replaceWith(data);
                    } else {
                        if ($('.favoriting').length > 0) {
                            $('.favoriting').after(data);
                        } else {
                            $('#actions h3').after(data);
                        }
                    }
                    $('.star').rating();
                });

                action = '/view/add-media-comment/id/' + id;

                $.get(action, function(data) {
                    $.getScript('/js/photo.js');
                    $('#media-comments').html(data);
                });

            } finally {

                return false;
            }

        }

        return false;
    });
    $('#add_to_favorites').hover(function() {
        var id = $('#media-photo img').attr('id');
        var action = '/view/photo/id/' + id;
        $('.favoriting').attr('action', action);
    });
    $('#rate-button').hover(function() {
        var id = $('#media-photo img').attr('id');
        var action = '/view/photo/id/' + id;
        $('.rating').attr('action', action);
    });
    $('a.previous-media, a.next-media').click(function() {
        var id = $('#media-photo img').attr('id');
        var href = $(this).attr('href');
        href = href.split('/');
        var p = href[href.length - 1];
        var url = '/view/album-photos/id/' + id + '/p/' + p;

        $.get(url, function(data) {
            $.getScript('/js/photo.js');
            $('.box-content2').html(data);
        });

        return false;
    });
    $('#media-comments form').submit(function() {
        var id = $('#media-photo img').attr('id');
        var url = '/view/add-media-comment/id/' + id;

        var postData = $(this).serialize() + '&add_comment=Submit';
        $.post(url, postData, function(data) {
            $.getScript('/js/photo.js');
            $('#media-comments').html(data);
        });

        return false;
    });
});

id
来自哪里?

嗯,请快速尝试,并告诉我它是否有效:

if (id != $('#media-photo img').attr('id')) {

我已经删除了那条线。它实际上来自锚点(每个锚点都有id属性,标记更复杂,所以我尽可能简化了它),比如var id=$(this.attr('id');为了澄清这不是问题,我已经用alert检查了id,它有正确的值,我还尝试了删除if条件,问题仍然存在。我使用try{}解决了问题最后{},检查原始帖子,我已经更新了它。OKKKK,但修复异常不是更好吗?:)是的,但我不确定异常发生在哪里。我现在已经在Firefox和IE8中测试了这个页面,所有的ajax请求和所有其他在click event()中发生的事情似乎都能正常执行。还有一些事情正在发生,我刚刚把你的代码放到一个测试页面中,它在IE8中工作得很好。你能给我们更多的信息吗?我已经用try{}解决了这个问题。最后,检查原始帖子,我已经更新了。你的简化示例在IE7中对我有用。您是否尝试过在IE8中运行上述实际代码,或者只是您更复杂的版本?您的代码在IE8兼容模式和不兼容模式下都适用于我。但是,在Firefox中,它不适用于我,它导航到图像而不是将图像加载到img标记中。我已经解决了这个问题(通过使用try{}finally{}block,所以即使js中出现错误,它仍然返回false)。@Michael:什么版本的Firefox。它在3.5.2中工作得很好。
$(document).ready(function() {
    $('.box-content2 a.img').click(function() {
        var path = $(this).attr('href');
        var title = $('img', this).attr('alt');
        var description = jQuery.trim($(this).attr('title'));
        var id = $(this).attr('id');

        if (id != $('#media-photo img').attr('id')) {

            try {

                $('#media-photo img').attr('src', path);
                $('#media-photo img').attr('alt', title);
                $('#media-photo img').attr('id', id);

                $('#content h2:first').text('You Are Viewing "' + title + '"');
                $('title').text('You Are Viewing "' + title + '"');

                if (description.length > 0) {
                    $('#content .box-container:first').removeClass('invisible');
                    $('#content .box-container:first p').text(description);
                } else {
                    $('#content .box-container:first').addClass('invisible');
                }

                var action = '/view/favoriting-form/id/' + id;

                $.get(action, function(data) {
                    if ($('.favoriting').length > 0) {
                    $('.favoriting').replaceWith(data);
                    } else {
                        $('#actions h3').after(data);
                    }
                });

                action = '/view/rating-form/id/' + id;

                $.get(action, function(data) {
                    if ($('.rating').length > 0) {
                        $('.rating').replaceWith(data);
                    } else {
                        if ($('.favoriting').length > 0) {
                            $('.favoriting').after(data);
                        } else {
                            $('#actions h3').after(data);
                        }
                    }
                    $('.star').rating();
                });

                action = '/view/add-media-comment/id/' + id;

                $.get(action, function(data) {
                    $.getScript('/js/photo.js');
                    $('#media-comments').html(data);
                });

            } finally {

                return false;
            }

        }

        return false;
    });
    $('#add_to_favorites').hover(function() {
        var id = $('#media-photo img').attr('id');
        var action = '/view/photo/id/' + id;
        $('.favoriting').attr('action', action);
    });
    $('#rate-button').hover(function() {
        var id = $('#media-photo img').attr('id');
        var action = '/view/photo/id/' + id;
        $('.rating').attr('action', action);
    });
    $('a.previous-media, a.next-media').click(function() {
        var id = $('#media-photo img').attr('id');
        var href = $(this).attr('href');
        href = href.split('/');
        var p = href[href.length - 1];
        var url = '/view/album-photos/id/' + id + '/p/' + p;

        $.get(url, function(data) {
            $.getScript('/js/photo.js');
            $('.box-content2').html(data);
        });

        return false;
    });
    $('#media-comments form').submit(function() {
        var id = $('#media-photo img').attr('id');
        var url = '/view/add-media-comment/id/' + id;

        var postData = $(this).serialize() + '&add_comment=Submit';
        $.post(url, postData, function(data) {
            $.getScript('/js/photo.js');
            $('#media-comments').html(data);
        });

        return false;
    });
});
if (id != $('#media-photo img').attr('id')) {
$(document).ready(function() {
    $('a.img').click(function(ev) {
        var path = $(this).attr('href');

        $('#media-photo img').attr('src', path);
        ev.preventDefault();
        return false;
    });
});