根据父div id加载javascript文件

时间:2012-04-10 12:28:57

标签: javascript jquery javascript-events if-statement

---继续人们所说的话---

这是一个多页面的表单,它在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,否则不加载任何内容。

5 个答案:

答案 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.');
    });
}

WORKING DEMO

答案 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()方法将起作用。