2014-11-02 1 views
0

В приведенном ниже скрипте применяется класс CSS к атрибуту title html. Исходная страница, на которой появляется скрипт, находится здесь: How to change the style of Title attribute inside the anchor tag?Исправление ошибки для скрипта, который применяет CSS к атрибуту title

Отлично работает, но имеет небольшую ошибку. Если атрибут title пуст (<input type="text" title="">), он по-прежнему показывает пустое всплывающее окно на экране.

Может ли кто-нибудь помочь с фиксацией этого? . Что-то вроде «если название атрибута не имеет значения, не применяются CSS, не показывать всплывающее окно Спасибо

Script ниже:

// Use a closure to keep vars out of global scope 
(function() { 
    var ID = "tooltip", CLS_ON = "tooltip_ON", FOLLOW = true, 
    DATA = "_tooltip", OFFSET_X = 20, OFFSET_Y = 10, 
    showAt = function (e) { 
     var ntop = e.pageY + OFFSET_Y, nleft = e.pageX + OFFSET_X; 
     $("#" + ID).html($(e.target).data(DATA)).css({ 
      position: "absolute", top: ntop, left: nleft 
     }).show(); 
    }; 
    $(document).on("mouseenter", "*[title]", function (e) { 
     $(this).data(DATA, $(this).attr("title")); 
     $(this).removeAttr("title").addClass(CLS_ON); 
     $("<div id='" + ID + "' />").appendTo("body"); 
     showAt(e); 
    }); 
    $(document).on("mouseleave", "." + CLS_ON, function (e) { 
     $(this).attr("title", $(this).data(DATA)).removeClass(CLS_ON); 
     $("#" + ID).remove(); 
    }); 
    if (FOLLOW) { $(document).on("mousemove", "." + CLS_ON, showAt); } 
}()); 

ответ

2

таким образом:

$(document).on("mouseenter", "*[title]:not([title=''])" ... 
1

Один путь чтобы немедленно вернуться, если нет название:.

$(document).on("mouseenter", "*[title]", function (e) { 
     if (!$(this).attr('title')) return; 
     // rest of code 
    }); 

@ ответ C-SMILE является чище, хотя

Смежные вопросы