---继续人们所说的话---
这是一个多页面的表单,它在DOM中加载多个页面。 DOM加载page_2_2和page_3_3 HOWEVER,其中一个样式属性为display:none,另一个不具有。脚本是否可以检查哪个显示:none,然后加载相应的javascript文件?例如:
如果DIV ID = page_2_2的style =“display:none”,则加载page2.js,否则加载page1.js?
我有两个javascript文件...名为page1.js和page2.js。
我需要一个基于javascript的函数来说明
如果父DIV ID = page_2_2,则加载page1.js,如果父DIV ID = page_3_3,则加载page2.js,否则不加载任何内容。
答案 0 :(得分:2)
function loadscript(divID) {
var scriptURL;
if (divID == "page_2_2")
scriptURL = "page1.js";
else if (divID == "page_3_3")
scriptURL = "page2.js";
$.getScript(scriptURL);
}
这并不复杂,函数将字符串作为参数。
loadscript("page_2_2") // will load page1.js
loadscript("page_3_3") // will load page2.js
你作为字符串参数传递给elementid的类型并不重要。
修改强>
据我所知,你有两个div,其中一个有“none”作为显示值,所以你可以这样做。
<div id="page_2_2" style="display:none"></div>
<div id="page_3_3"></div>
$(document).ready(function() {
if ($('#page_2_2').is(':visible'))
$.getScript("page1.js");
else
$.getScript("page2.js");
});
答案 1 :(得分:2)
只需运行检查然后加载
if($('#page_2_2').is(":visible")){
$.getScript("/page1.js", function(data, textStatus, jqxhr) {
console.log(data); //data returned
console.log(textStatus); //success
console.log(jqxhr.status); //200
console.log('Load was performed.');
});
}else if($('#page_3_3').is(":visible")){
$.getScript("/page2.js", function(data, textStatus, jqxhr) {
console.log(data); //data returned
console.log(textStatus); //success
console.log(jqxhr.status); //200
console.log('Load was performed.');
});
}
答案 2 :(得分:1)
您可以检查div id,然后将一个脚本节点注入标头。我自己没有测试过。
if($('#[insert id]').length != 1){ inject script etc }
答案 3 :(得分:1)
我建议使用基于功能的方法,根据 使用 的内容而不是 ,将逻辑放在不同的文件中 你使用它。
示例文件结构:
/Scripts/Utils.js
/Scripts/SpecificEditor.js
/Scripts/Wysiwyg.js
在您需要wysiwyg的页面上,您将引用Wysiwyg.js,在您需要“SpecificEditor”的页面上,您将引用“SpecficEditor.js”。
根据您的方法,您的网站在增长时很难管理。例如,如何在页面之间共享逻辑?
答案 4 :(得分:0)
这应该可以解决问题:
function loadScript(filename){
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
document.getElementsByTagName("head")[0].appendChild(fileref)
}
if(document.getElementById("page_2_2")===null){
loadScript("page1.js");
}else if(document.getElementById("page_3_3")===null){
loadScript("page2.js");
}
使用jQuery稍微缩短,将if-else-if块转换为:
if($(".page_2_2").length==0){
loadScript("page1.js");
}else if($(".page_3_3").length==0){
loadScript("page2.js");
}
你并不清楚你的意思是什么?父母&#34; DIV。在这种情况下,如果该页面上的任何 div具有该ID,则会加载脚本。你不应该有多个具有相同id的元素,所以我想这没关系。否则jQuery closest()
方法将起作用。