我在页面上有一堆图像,这些图像包含在一个div中,内容块类似于:
<div class="content-block">
<img src="../images/path/path/image.jpg" alt="blah" title="blah" />
<img src="../images/path/path/image.jpg" alt="blah" title="blah" />
<img src="../images/path/path/image.jpg" alt="blah" title="blah" />
<img src="../images/path/path/image.jpg" alt="blah" title="blah" />
<img src="../images/path/path/image.jpg" alt="blah" title="blah" />
</div>
我通过ajax将这个html加载到div中。当我加载它时,我需要删除图像路径之前的“../”,加载后,所以路径保持正确。这可以用jQuery完成吗?非常感谢提前。
我在HTML中加载的jQuery代码:
$(document).ready(function() {
$('.projects a').click(function(event) {
$('#work').load(this.href + ' #loadwork');
event.preventDefault();
});
});
修改
$(document).ready(function() {
$('.projects a').click(function(event) {
$('#work').load(this.href + ' #loadwork', function(){
$('.content-block>img').each(function(){
$(this).attr('src',$(this).attr('src').replace('../',''));
});
});
event.preventDefault();
});
});
答案 0 :(得分:3)
$('.content-block>img').each(function(){
$(this).attr('src',$(this).attr('src').replace('../',''));
});
这应该可以解决问题。
- 编辑 -
根据您的代码,尝试这样:
$(document).ready(function() {
$('.projects a').click(function(event) {
$('#work').load(this.href + ' #loadwork',function(response){
$(response).find('div>img').each(function(){
$(this).attr('src',$(this).attr('src').replace('../',''));
// Output the response to the DOM
});
});
event.preventDefault();
});
});
我认为这应该有用......你可能需要使用find选择器。
答案 1 :(得分:1)
您可能希望在load方法的回调中执行replace,以便它只在加载图像后执行。这样的事情(使用布兰特的替换代码):
$('#work').load(this.href + ' #loadwork', function()
{
$('.content-block>img').each(function(){
$(this).attr('src',$(this).attr('src').replace('../',''));
});
}));
答案 2 :(得分:0)
试试这个(未经测试):
$('.content-block img').each(function() {
var path = $(this).attr('src');
path = path.substr(3);
$(this).attr('src', path);
}
);
答案 3 :(得分:0)
或者,或者,通过服务器端方法生成HTML,该方法计算相对于应用程序根目录的URL(“/appName/images/path/path/image.jpg”),然后您可以加载标记进入任何页面而不必担心它是否会起作用。 这可以防止您必须在客户端处理html片段,使您的页面更清洁。