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を使用します。関数のロジックは機能していますが、それは問題ではありません。間違った場所でライブを使用していると思うだけです。私は答えを見つけることができません.. 助けることができるものは何でも大歓迎です.

ありがとうございました。

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

custom event 内の DOM に追加されるいくつかの要素にアクセスしたいと思いますput_result

その場合は、put_resultDOM に追加した後に呼び出されるイベントへのコールバック関数を作成することをお勧めします。下記参照、

$('#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 に答える