【发布时间】:2019-12-19 17:39:08
【问题描述】:
我在使用 jQuery .load() 动态加载的 HTML div 中显示图像时遇到问题。我目前使用的jQuery函数如下:
jQuery(document).ready(function(e) {
// Past sendout nav trigger function
e( ".btn--nav-trigger" ).click(function() {
e( this ).toggleClass( "btn--nav-trigger-active" );
e( ".sendout__list" ).toggleClass( "sendout__list--open" );
});
// AJAX .load function for sendout post content
e( ".sendout-link" ).click(function() {
e( ".btn--nav-trigger" ).toggleClass( "btn--nav-trigger-active" );
e( ".sendout__list" ).toggleClass( "sendout__list--open" );
var post_url = e( this ).attr( "href" );
e( "#sendout-container" ).html( '<div class="loading"></div>' );
e( "#sendout-container" ).load( post_url + "#sendout-content", function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Sorry but there was an error: ";
e( "#sendout-container" ).html( msg + xhr.status + " " + xhr.statusText );
}
});
return false;
});
});
该函数成功地从选定的 WordPress 帖子加载文本和 YouTube iframe,但它总是剥离图像。
函数中的href 属性使用WordPress 中的<?php the_permalink(); ?>。个别帖子正确加载,但 .load() 函数正在剥离完整的 <img> 标签。
更新
看起来包含图像的整个 div 也被剥离了。不知道为什么会这样。我已经包含了在使用下面的.load() 函数时被完全剥离的 WordPress HTML/PHP 代码。此代码使用 WordPress/PHP 正确显示。
<?php if(get_field( 'meme_one_image' )): ?>
<div class="sendout__row sendout--meme">
<?php
$memeOneImage = get_field( 'meme_one_image' );
if( !empty($memeOneImage) ): ?>
<img src="<?php echo $memeOneImage['url']; ?>" alt="<?php echo $memeOneImage['alt']; ?>" />
<div class="sendout--meme_share">
<h4>Share this meme</h4>
<a href="http://www.facebook.com/sharer/sharer.php?u=<?php echo $memeOneImage['url']; ?>" class="button">Facebook</a>
<a href="http://twitter.com/intent/tweet?text=<?php echo $memeOneImage['title'] .' : '. $memeOneImage['url']; ?>" class="button">Twitter</a>
<button class="button copy-button" data-clipboard-text="<?php echo $memeOneImage['url']; ?>">Copy URL</button>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
更新二
我已经修复了我的主题文件和 JavaScript 以使用正确的元素来动态加载帖子类型的内容块。我更新了我的 .load(); 函数以实施 Alexander O'Mara 建议的修复。
图片正在通过.load();加载。
【问题讨论】:
-
没有理由会发生这种情况。您如何确定图像不存在 - 因为它们没有在页面上显示为图像,或者您是否确实验证了输出中不存在 img 标签?
-
看看这是否回答了您听起来相似的问题 - stackoverflow.com/questions/6036870/…
-
@Utkanos 我已经查看了呈现的页面和源代码,在这两种情况下,完整的
<img>都被从 jQuery 加载的内容中删除。如果我查看由 WordPress/PHP 加载的页面,图像不会被剥离。 -
万一您不知道,WP 网站有一个 REST API,您可以利用它来获取您的部分内容。
标签: javascript jquery ajax image