0

私は次のjQueryコードを持っています、

 setTips: function() {
            $(".tooltip").parent().hover(function(){
            //store the tooltip being hovered
            TT.current = $(this);
            TT.timer = setTimeout(function(){
                //find the tooltip
                TT.current.find(".tooltip").fadeIn('fast');
                }, TT.delay);
            }, function(){
                //on mouseout, clear timer and hide tooltip
                clearTimeout(TT.timer);
                $(this).find(".tooltip").fadeOut('fast');

これはブラウザではうまく機能しますが、iPhoneでは、ツールチップが表示されるたびにそれを非表示にする方法はありません。

スパンの外側をタップしてフェードアウトさせる方法はありますか?ありがとうございました!

4

1 に答える 1

1

このようなタップでツールチップを非表示にする一般的なクリック イベントはどうですか?

$('body').on('click', function(e) {
    if ( $(e.target).hasClass('.element-that-called-tooltip') ) return; // return if the tapped element was one that called the tooltip
    $('.tooltip').fadeOut('fast');
});

編集:

したがって、問題は iOS のホバー イベントにありました。これを軽減する最善の方法は、機能検出 ( Modernizrなどのライブラリを使用) を使用し、非タッチ デバイスのホバー イベントをバインドし、タッチ デバイスのクリック イベントをバインドすることです。

jsFiddle: http://jsfiddle.net/RAJ5Q/1/

if ( $('html').hasClass('no-touch') ) {
    // bind to hover
}
else {
    // bind to click
}
于 2012-11-21T18:10:26.270 に答える