Javascript jQuery问题
HTML: 说明: 上面的代码应该做的是,当您单击一个锚(使用类img)时,#media photo div中的图像将根据锚的href属性(href是图像的相对路径,它将替换当前img的src属性)更改为新的图像 它在Firefox中工作得很好 在IE中(特别是第8版,我还没有测试旧版本),当你点击锚时,图像会在浏览器中打开 如何在IE中也实现这一点 编辑: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代码(我在上面对
我使用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;
});
});