私は、div からテキストを選択した後 (contenteditable = true)、ユーザーがオプション付きのツールチップを取得する小さな Web アプリケーションに取り組んでいます。
ユーザーがテキストを選択すると、fadesIn
「mouseup」イベントのツールチップ。イベントmousedown
はツールチップに使用されfadeOut
ます。
ユーザーがテキスト全体を選択しない限り、すべてが魅力的に機能します。そうしてから div の別の場所をクリックすると、ツールチップがフェードアウトして再びフェードインします。
この動作の例は、http: //jsfiddle.net/7NEk3/275/にあり ます。イベントは次のようにコーディングされています。
$('#show-bubb-text').mouseup(function(e) {
var selection = getSelected();
if (selection && (selection = new String(selection).replace(/^\s+|\s+$/g, '')))
{
selectionImage.attr('href',
url.replace('{term}', encodeURI(selection))).css({
top: e.pageY - 30, //offsets
left: e.pageX - 13 //offsets
}).fadeIn();
}
});
$(document.body).mousedown(function() {
selectionImage.fadeOut();
});
たとえば「CREATE A LOGO」を選択すると、ツールチップがフェードインし、div の別の場所をクリックするとツールチップがフェードアウトします。
テキストのチャンク全体、つまり「SMS」から「/」までを選択します。ツールチップは期待どおりに表示されますが、選択部分または選択されていない部分をクリックすると、ツールチップがフェードアウトして元に戻ります。
これは予想される動作ですか?私は何を間違っていますか?
編集:これは Firefox でうまく動作するようです。ただし、Chrome や Safari では機能しません。