如何使用jquery通过.filter传递变量

时间:2016-09-27 20:14:16

标签: javascript jquery

我设法将另一个网页的表格转换为名为 res 的变量。

我需要通过 search 的过滤器传递此变量。

我使用 .parents() 获取对应的表格行。

当表格与jQuery位于同一页面时,此过滤器有效,但在使用 $.get() 时则无效。

以下是我的方法:

$.get('oncalltable.html', function(res) {

    var d = new Date();

    var month = d.getMonth()+1;
    var day = d.getDate();
    var year = d.getFullYear();

    var oncalldate = ((''+month).length<2 ? '0' : '') + month + '/' +
        ((''+day).length<2 ? '0' : '') + day + '/' + year % 100;

    var search = oncalldate;

    var todayoncall = $("span").filter(function() {
        return $(this).text() == search;
    }).parents('tr');

    console.log(oncalldate, res, todayoncall);

    $('.test span').append(todayoncall);

});

1 个答案:

答案 0 :(得分:1)

JQuery选择器可以对抗DOM。 oncalltable.html不在DOM中,它只是一个恰好类似于HTML的变量中的文本。

我猜你希望你的$(&#34; span&#34;)选择器能够看到oncalltable.html的内容。它不会因为您正在寻找的<span>(在oncalltable.html内)不在DOM中。

如果(并且仅当)您极为确信oncalltable.html中的数据现在并且始终完全值得信赖,您可以通过将该html加载到您的页面中将其添加到DOM中。

这样做的一种方法是分配&#39; res&#39;到一些现有页面元素的.innerHTML。 如果你已经(或决定制作)一个隐藏的div来保存你的数据,那么它就被解析了:

<div id="whereResGoes" style="display:none"></div>

然后在你传递给$ .get的函数中(就在使用$(&#39; span&#39;)选择器的部分上方),运行

$('whereResGoes').html(res);

现在它已加载到您的DOM中,您的$(&#39; span&#39;)选择器可以看到它。

请注意,由于此方法使oncalltable.html成为您网页的一部分,这就像让oncalltable.html的作者在您的网页上写下他们想要的任何内容一样。如果该页面遭到破坏,您的页面也会受到损害。