使用 .load() 方法检测并交付多个 wrap() 函数?
Using a .load() Method to Detect and Deliver Multiple wrap() Functions Within?
我开发了一个脚本,其目的是从列出的 url 源位置抓取(加载)第一个内容条目。
在那些特定位置,无论第一个条目是什么,我都希望 iframe(如果在该条目中检测到)应用相应的包装功能,(如下所示)。
这是一个脚本示例:
$("#embed-content-div1").load("https://theurl.com/urltosource1/ #entry:first");
$("#embed-content-div2").load("https://theurl.com/urltosource2/ #entry:first", function(data) {
$(function() {
$("iframe.content1").wrap("<div class='content1-wrap'></div>");
});
$(function() {
$("iframe.content2").wrap("<div class='content2-wrap'></div>");
});
$(function() {
$("iframe.content3").wrap("<div class='content3-wrap'></div>");
});
});
但是,这个特定的脚本似乎并不能始终如一地工作,并且在 Chrome 和 Safari 中的某些情况下会出现故障。它似乎只在刷新整个页面时效果最好。
是否有更好的方法来实现这一点,以确保它能够提供更好的整体跨浏览器性能?
由于您要将相同的内容加载到每个元素中,因此您可能应该查看每个元素的内部以便 iframe 进行包装。 load()
是异步的,因此当您只使用其中一个回调时计时可能会关闭
您可以在一个简单的包装函数中完成,而不是为每个重复代码
function loadContent( selector, url){
var $cont = $(selector);
$cont.load(url, function(){
$.each([1,2,3], function(_, num){
$cont.find('iframe.content' + num).wrap('<div class="content'+ num +'-wrap"></div>')
});
});
}
loadContent('#embed-content-div1','https://theurl.com/urltosource1/ #entry:first')
loadContent('#embed-content-div2','https://theurl.com/urltosource2/ #entry:first')
所以,我想出了一个既修复又提高了脚本性能的解决方案:
$(document).ready(function() {
$("#embed-content-div2").load("https://theurl.com/urltosource2/ #entry:first", function(data) {
$(function() {
$("iframe.content1").wrap("<div class='content1-wrap'></div>");
});
$(function() {
$("iframe.content2").wrap("<div class='content2-wrap'></div>");
});
$(function() {
$("iframe.content3").wrap("<div class='content3-wrap'></div>");
});
});
});
$("#embed-content-div1").load("https://theurl.com/urltosource1/ #entry:first");
我开发了一个脚本,其目的是从列出的 url 源位置抓取(加载)第一个内容条目。
在那些特定位置,无论第一个条目是什么,我都希望 iframe(如果在该条目中检测到)应用相应的包装功能,(如下所示)。
这是一个脚本示例:
$("#embed-content-div1").load("https://theurl.com/urltosource1/ #entry:first");
$("#embed-content-div2").load("https://theurl.com/urltosource2/ #entry:first", function(data) {
$(function() {
$("iframe.content1").wrap("<div class='content1-wrap'></div>");
});
$(function() {
$("iframe.content2").wrap("<div class='content2-wrap'></div>");
});
$(function() {
$("iframe.content3").wrap("<div class='content3-wrap'></div>");
});
});
但是,这个特定的脚本似乎并不能始终如一地工作,并且在 Chrome 和 Safari 中的某些情况下会出现故障。它似乎只在刷新整个页面时效果最好。
是否有更好的方法来实现这一点,以确保它能够提供更好的整体跨浏览器性能?
由于您要将相同的内容加载到每个元素中,因此您可能应该查看每个元素的内部以便 iframe 进行包装。 load()
是异步的,因此当您只使用其中一个回调时计时可能会关闭
您可以在一个简单的包装函数中完成,而不是为每个重复代码
function loadContent( selector, url){
var $cont = $(selector);
$cont.load(url, function(){
$.each([1,2,3], function(_, num){
$cont.find('iframe.content' + num).wrap('<div class="content'+ num +'-wrap"></div>')
});
});
}
loadContent('#embed-content-div1','https://theurl.com/urltosource1/ #entry:first')
loadContent('#embed-content-div2','https://theurl.com/urltosource2/ #entry:first')
所以,我想出了一个既修复又提高了脚本性能的解决方案:
$(document).ready(function() {
$("#embed-content-div2").load("https://theurl.com/urltosource2/ #entry:first", function(data) {
$(function() {
$("iframe.content1").wrap("<div class='content1-wrap'></div>");
});
$(function() {
$("iframe.content2").wrap("<div class='content2-wrap'></div>");
});
$(function() {
$("iframe.content3").wrap("<div class='content3-wrap'></div>");
});
});
});
$("#embed-content-div1").load("https://theurl.com/urltosource1/ #entry:first");