javascript - 为 jquerys.load() 准备参数

标签 javascript jquery html

我正在尝试将一个 html 文件加载到另一个 html 文件。

例如:

$(function() {
    $('#main li').on('click', function() {
        var loadstring = $(this).data('url') + ' ' +  $(this).data('target');
        $('#container').load( loadstring );
    });
});

<div id="main">
    <ul>        
        <li data-url="home.html" data-target="#foo">Home</li>
        <li data-url="some.html" data-target="#bar">Some</li>                   
    </ul>
</div>
<div id="container"> </div>

在我的 some.html<p>包含数据且 ID 为 bar 的元素. 在我的 home.html 中,没有 ID 为 foono 元素。 .

我想要实现的是:

我想要的是检查加载的文件是否包含具有特定 id 的元素。 或类,取决于传递的数据。 如果是,加载应该如下所示:

home.html #foo

如果没有,加载应该是这样的

home.html

所以整个页面都被加载了。

有没有一种方法可以使用 load() 并检查现有元素?

我试过这样的

var loadstring = $(this).data('url') + ' ' +  $(this).data('target');
var e = $('#container').load( loadstring );
alert(e.prop('childElementCount'));

但这结果为 0,在第二次尝试时它说它找到了一个元素,因为它实际上是在我的容器中而不是在加载文件中查找:D

对于那些喜欢碰碰运气的人

我只是建了一个小的“testFiddle”^^ HERE

最佳答案

最好的办法是使用异步调用来加载文件:

$(document).on('click', '#main li', function () {
    var url = $(this).data('url');
    var targetSelector = $(this).data('target');
    var callback = function (data) {
        $(targetSelector).html(data);
    };
    var dataType = 'text/html';
    $.get(url, {}, callback);
});

关于javascript - 为 jquerys.load() 准备参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890779/

相关文章:

javascript - 你如何运行多个 grunt scripts.postinstall?

javascript - JQuery:动态更新 HTML,以便 JQuery 识别它

jQuery 自定义属性的非侵入式客户端验证

html - Bootstrap Carousel - 控件仅适用于第一个 carousel

javascript - Angular "angular.js:14110 Error: [ng:areq] Argument ' fn' 不是函数, Controller 实例化时出现未定义的异常

javascript - Chrome 开发工具关闭时 Web 应用程序无法运行

javascript - 提交文件输入数组而不提交表单本身

javascript - Google api v3 在客户道路上显示附近的标记

Jquery AJAX 创建具有父子功能的选择

javascript - 为什么即使禁用缓存,服务器也会忽略代码文件中的更改?