使用脚本标记加载Jquery

时间:2011-05-10 15:00:25

标签: jquery load

我在jQuery中阅读了有关.load函数的内容。有没有办法在加载的页面中插入脚本标签?

当我尝试加载页面时,脚本无法加载:s,我想解决这个问题。并且getscript()不是一个选项。

2 个答案:

答案 0 :(得分:8)

.load()返回包含<script>标记的HTML内容时,jQuery删除<script>标记,移动它们, 1 执行它们,然后删除它们

虽然这使得使用调试器很难逐步执行这些脚本,但脚本执行执行。

另见


1 无论是<head>还是最父元素 - 我还没有找到关于此的权威来源,尽管我可以查看jQuery源代码。

答案 1 :(得分:1)

而不是使用$(el).load我做了$ .get,解析了结果en ev(i)lled;)脚本

为了便于阅读和理解,我尝试使用反映其目的的变量名并简化了很多。当然,这里应该有一些错误处理,但它只是一个POC。 HTH某人:)

低于* le code

var ajax_url = "mypage.htm";
var result_selector_filter = "#mynewcontent";
var element_to_update = $("#mycontent");

// below the statement that you'ld normally use
// element_to_update.load(ajax_url + ' ' + result_selector_filter);

$.get(ajax_url, function(response){
    // parse the entire response into a jQuery object
    var initial_parsed_result = $(response);
    // find the selector that needed to be filtered
    var result_node = initial_parsed_result.find(result_selector_filter);

    // update the html
    element_to_update.html(result_node.html());

    // variables used while looping
    var current_node,i;

    // Loop the parsed result jQuery object, check if it's a script tag and evaluate it
    for(i=0;i<initial_parsed_result.length;i++){
        // create a jquery object for current looped result html
        current_node = $(initial_parsed_result.get(i));
        // check if current node is a script tag
        // method always returns the tagname in CAPITALS
        if(current_node.prop("tagName")=="SCRIPT") {
            eval(current_node.html());
        }
    }
});