修改动态添加的内容

时间:2012-04-24 15:51:31

标签: dynamic jquery

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

在更改select时,我以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进行日期比较。功能逻辑正在工作,这不是问题。它只是我认为我在错误的地方使用现场或类似的东西。我只是找不到答案..任何有用的东西都是受欢迎的。

谢谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

如果是这种情况,那么我建议你为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');
    }
}