0

我已经使用了搜索..并尝试了很多东西..但我只是没有让它工作。这是我所做的:

在更改选择时,我请求一些 JSON 格式的数据。之后,我调用一个函数:

  if (result.events) {
    $('#filter_result').trigger('put_result', result);
  }

在 put_results() 中,我构建了 HTML:

  $('#filter_result').bind('put_result', function (e, data) {
    html = '<h1 class="header_dates">Termine</h1>';
    // and some more
    $(this).html(html).stop(true, true).stop(true, true).slideDown();
  }

我现在要做的是修改#filter_result HTML 的一部分。我想看看一个已经建成的,并获得价值。

插入的 HTML 标记如下所示:

    <table>
      <thead>
        <tr>
          <th>Großraum</th>
          <th>Thema</th>
          <th>Termin</th>
          <th>Anmeldung</th>
        </tr>
      </thead>
      <tbody>
        <tr class="last">
          <td class="key_0">Berlin</td>
          <td class="key_1">273</td>
          <td class="key_2">27.04.2012</td>
          <td class="key_4"><a href="link/273.html" class="btn_jetzt_anmelden partnerallowed">Jetzt anmelden</a></td>
        </tr>
      </tbody>
    </table>

为此,我编写了一个在“触发器”行之后被调用的函数。我想到了类似的东西:

function unsetlink(){
    if(Date.parse($('.key_2').live().HTML()).equals(Date.today().add(2).days())) {
        alert('false');
    }
    else {
        alert('true');
    }
}

我使用 date.js 进行日期比较。功能逻辑正常工作,这不是问题。只是我认为我在错误的地方使用 live 或类似的东西。我只是找不到答案。欢迎任何可以提供帮助的东西。

谢谢你。

4

2 回答 2

1

鉴于您的更新,并假设您调用它时内容存在,该函数应该是:

function unsetlink() {
    if (Date.parse($('.key_2').text()).equals(Date.today().add(2).days())) {
        alert('false');
    } else {
        alert('true');
    }
}

这是对该功能的共同测试:http: //jsfiddle.net/MarkSchultheiss/86mDa/

EDIT2:这是处理多个注入内容组的示例:http: //jsfiddle.net/MarkSchultheiss/86mDa/3/

这是该示例中的代码:

function unsetlink(daysadvance) {
    $('.key_2').each(function() {
        if (Date.parse($(this).text()).equals(Date.today().add(daysadvance).days())) {
            $(this).addClass('showFalse');
            $('#me').text($(this).text());//this is just to show what we are processing currnetly
            alert('false');
        } else {
            $(this).addClass('showTrue');
            alert('true');
        }
    })
}
$('#me').after('<table><thead><tr><th>Großraum</th><th>Thema</th><th>Termin</th><th>Anmeldung</th></tr></thead><tbody><tr class="last"><td class="key_0">Berlin</td><td class="key_1">273</td><td class="key_2">27.04.2012</td><td class="key_4"><a href="273.html" class="btn_jetzt_anmelden partnerallowed">register</a></td></tr><tr class="last"><td class="key_0">Berlin</td><td class="key_1">273</td><td class="key_2">28.04.2012</td><td class="key_4"><a href="273.html" class="btn_jetzt_anmelden partnerallowed">register</a></td></tr></tbody></table>');
var daysadvance = 3;
unsetlink(daysadvance);
于 2012-04-24T20:55:42.487 回答
0

我认为您想访问一些将添加到自定义事件中的 DOM 的元素put_result

如果是这种情况,那么我建议您为put_result事件编写一个回调函数,该函数将在您附加到 DOM 后调用。见下文,

$('#filter_result').bind('put_result', function (e, data, callback) {
    html = '<h1 class="header_dates">Termine</h1>';
    // and some more
    $(this).html(html).stop(true, true).slideDown(); //removed one .stop(true, true)

    callback(); //invoke the callback at the end or when needed accordingly
});

在触发器中,

//unsetlink is your callback function - Change it to an inner function
//if you want to do more and then call unsetlink at the end.
$('#filter_result').trigger('put_result', [result, unsetlink]); 

并将您的unsetlink功能更改为

function unsetlink(){
    if(Date.parse($('.key_2').text()).equals(Date.today().add(2).days())) {
        alert('false');
    } else {
        alert('true');
    }
}
于 2012-04-24T16:03:39.407 回答