2015-01-17 2 views
2

Я использую плагин jQuery под названием webuiPopover. Он добавляет popover к ссылкам. Когда пользователь наводит ссылку, содержимое popover извлекается через AJAX. Для этого требуется определенный url с соответствующими параметрами.jQuery's attr (...) в параметре функции не определен

Так это код:

$(document).ready(function() { 
    $(".qa-user-link").webuiPopover({ 
     placement:"auto", 
     trigger:"hover", 
     type:"async", 
     cache:false, 
     url:"./qa-plugin/q2a-user-popover/qa-user-popover-details.php?handle="+$(this).attr("data-id")+"&incdir=%2Fhome%2Fpeatar5%2Fpublic_html%2Fbiophilie%2Fqa-include%2F", 
     content:function(data) {return data;} 
    }); 
}); 

Как вы можете видеть, что я вычислить «URL» делает использование attr(...) функции JQuery в. К сожалению, этот маленький фрагмент кода всегда возвращает «undefined».

Если я использую один и тот же кусок кода ($(this).attr("data-id")) в параметре content (дать function (data) {return $(this).attr("data-id");} он работает отлично.

Что происходит не так?

+2

Ну, что такое '$ (this)' _ в этой ситуации_? Я предлагаю вам использовать консоль разработки браузеров для этого ... – arkascha

+0

'$ (this)' должен быть одним из возможных элементов, имеющих «qa-user-link» в качестве атрибута класса. Я думал, что jQuery автоматически зациклился на каждом из этих элементов и что '$ (this)' имел в виду их ... Спасибо за помощь! –

+1

Ну ... «Предполагается» на самом деле здесь не помогает, не так ли? Не угадайте, но посмотрите, что это! – arkascha

ответ

3

this относится к document внутри обратного вызова $(document).ready. Он работает внутри обратного вызова content, потому что плагин равен binding элементам content, когда он называет его.

Если вы хотите иметь отдельный URL для каждого popover, вам нужно будет привязать плагин popover отдельно для каждого элемента:

$(document).ready(function() { 
    $(".qa-user-link").each(function () { 
     var $this = $(this); 
     $this.webuiPopover({ 
      placement:"auto", 
      trigger:"hover", 
      type:"async", 
      cache:false, 
      url:"./qa-plugin/q2a-user-popover/qa-user-popover-details.php?handle="+$this.attr("data-id")+"&incdir=%2Fhome%2Fpeatar5%2Fpublic_html%2Fbiophilie%2Fqa-include%2F", 
      content:function(data) {return data;} 
     }); 
    }); 
}); 
+0

Это работает как шарм, большое вам спасибо! (я не могу повышать, потому что у меня нет необходимой репутации) –

+0

@Bruno Не стоит беспокоиться :) Я рад, что смог помочь! – Paulpro