jQuery: Как я могу добавить div, чтобы покрыть элемент наведением мыши?

0

Я хочу добавить div, чтобы покрыть элемент, который наведите курсор мыши на веб-страницу. Я попытался сделать следующее, но это не получилось. Как мне это сделать? Благодарю!

  jQuery(function ($) {

    $("*").bind("mouseenter.noteEvent", function (event) {

    var offset = $(this).offset();
    var enterBg = "<div id = 'tooltip_enterbg'></div>";
    $("body").append(enterBg);
    $("#tooltip_enterbg")
        .css({
                "top": offset.top + "px",
                "left": offset.left + "px",
                "width": $(this).width(),
                "height": $(this).height(),
                "opacity": 0.5,
                "background-color": "#FFFF00"}
        );

    });

    $("*").bind("mouseleave.noteEvent", function (event) {
       $("#tooltip_enterbg").remove();
    });

});

jsfiddle Демо: В этой демонстрации, когда мышь переходит на "AAA", вся страница превращается в светлую, я хочу, чтобы "AAA" превращался в светлое.

  • 0
    Примечание: вы подключаете эти обработчики событий ко многим элементам. Вы могли бы рассмотреть делегирование события - $("body").on("mouseenter", "*", function() { ... });
Теги:

2 ответа

0

Используйте следующий код:

jQuery(function ($) {

    $("p").bind("mouseenter.noteEvent", function (event) {

    var offset = $(this).offset();
    var enterBg = "<div id = 'tooltip_enterbg'></div>";
    $("body").append(enterBg);
    $("#tooltip_enterbg")
        .css({
                "top": offset.top + "px",
                "left": offset.left + "px",
                "width": $(this).width(),
                "height": $(this).height(),
                "opacity": 0.5,
                "background-color": "#FFFF00",
                "position": "fixed"}
        );
    });

    $("p").bind("mouseleave.noteEvent", function (event) {
       $("#tooltip_enterbg").remove();
    });
});

Демо здесь: http://jsfiddle.net/Mv472/3/

0

Бит, который вы упускаете, имеет position: absolute, например:

$("#tooltip_enterbg")
    .css({
            "top": offset.top + "px",
            "left": offset.left + "px",
            "width": $(this).width(),
            "height": $(this).height(),
            "opacity": 0.5,
            "background-color": "#FFFF00",
            "position": "absolute"}     // <===== Here
    );

Примечание:

Нет необходимости искать элемент, который вы только что добавили. + Изменить

var enterBg = "<div id = 'tooltip_enterbg'></div>";
$("body").append(enterBg);
$("#tooltip_enterbg")
    .css/*...*/

в

var enterBg = $("<div id = 'tooltip_enterbg'></div>");
$("body").append(enterBg);
enterBg
    .css/*...*/
  • 0
    Я попробовал "position": "absolute" , но он влияет на то, что вся страница становится светлее, я только хочу, чтобы div покрыл небольшой раздел.
  • 0
    @ tao4yu: Вам нужно position: absolute , чтобы позиционировать div. Если это не то, чего вы хотите, вам нужно посмотреть на его метрики в инструментах разработки и выяснить, почему это не то, чего вы хотите, но эта часть не является обязательной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню