1

私のバインド関数:

$searchInput.bind('blur', function() {
  $searchResults.remove();
}

しかし、$ searchResults内のリンクをクリックしても、これは発生しないはずです。リンクをクリックする前に$searchResultsが削除されました。どうすればいいですか?

4

3 に答える 3

2

マウスオーバーでフラグを設定するだけです$searchResults

var isOver = false;
$searchInput.bind("blur", function(e) {
    if (!isOver) {
        $searchResults.remove();
    }
});

$searchResults.hover(function() {
    isOver = true;
}, function() {
    isOver = false;
});

デモ: http://jsfiddle.net/sUA4D/

setting などの要素データを介して同じことを行うことができます$searchResults.data("isOver", true)

于 2013-02-01T18:29:57.543 に答える
1

頭に浮かぶ 1 つのオプションは、次の$.remove()ように呼び出しの実行を遅らせることです。

$searchInput.bind('blur', function() {
    setTimeout(function() {
        $searchResults.remove();
    }, 100);
}
于 2013-02-01T18:25:15.190 に答える
0
$searchInput.find('a').on('click', function() {
  $searchResults.remove();
});
于 2013-02-01T18:26:24.873 に答える