2012-04-20 2 views
0

Я пытаюсь создать всплывающую подсказку со списком внутри, этот список должен быть выбран, поэтому я использую код из следующего wbepage: http://3nhanced.com/javascript/simple-tooltip-powered-by-jquery/ , чтобы создать свою подсказку, но когда я использую следующий код для создать выборку:Является ли мой селектор jquery неправильным?

$(document).ready(function() { 

     $('.toolTip').hover(
      function() { 
       this.tip = this.title; 
       console.log($(this)); 
       $(this).append(
        '<div class="toolTipWrapper">' 
         +'<div class="toolTipTop"></div>' 
         +'<div class="toolTipMid">' 
          +'<ul id="selectable">' 
           +'<li class="ui-widget-content">Item</li>' 
           +'<li class="ui-widget-content">Item</li>' 
          +'</ul>'            
         +'</div>' 
         +'<div class="toolTipBtm"></div>' 
        +'</div>' 
       ); 
       this.title = ""; 
       this.width = $(this).width(); 
       $(this).find('.toolTipWrapper').css({left:this.width-22}) 
       $('.toolTipWrapper').fadeIn(300); 
      }, 
      function() { 
       $('.toolTipWrapper').fadeOut(100); 
       $(this).children().remove(); 
       this.title = this.tip; 
      } 
     ); 


     $("#selectable").selectable({ 
      stop: function() { 
       var $item2 = $(this), 
       $target = $(event.target); 
       console.log($target);     
       var result = $("#select-result").empty(); 
       $(".ui-selected", this).each(function() { 
        var index = $("#selectable li").index(this); 
        result.append(" #" + (index + 1)); 
       }); 
      } 
     });   
}); 

У кого-нибудь есть идея, почему он не работает? Как все видят; toolltipcreation выполняется сначала перед использованием выбираемой функции. Спасибо заранее.

+0

Немного не по теме: Вы создаете/присоединяете и уничтожаете div каждый раз, когда вы наводите курсор на что-то? Разве не было бы легче, чтобы div уже существовал и скрывал/показывал его? –

ответ

1

Вы должны позвонить $("#selectable").selectable(...), когда элемент действительно существует. Другими словами, после создания всплывающей подсказки.

+0

Не происходит, когда у меня есть создание моей подсказки и выбираемой функции внутри $ (document) .onready funtcion ??? – linker85

2

Код внутри $(function() {...}); работает, когда DOM готов. Тем не менее, вы вставляете свой <ul id="selectable"> позже, используя функцию .append(), поэтому элемент не существует, когда выполняется ваш первый раздел кода.

Вам понадобится запустить этот код после добавления дополнительного HTML-кода.

+0

Я запускаю все внутри функции $ (document) .ready – linker85

+0

@ linker85 Кажется, что это будет проблема с порядком, в котором вы вызываете каждый из разделов кода. Убедитесь, что раздел '$ (" #selectable ") .selectable ({...});' является ** после ** части, которая добавляет элементы. –

+0

Хорошо, я решаю это, поставив функцию выбора внутри функции наведения. – linker85

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