2013-11-16 3 views
0

Я использую .load(), чтобы загрузить вещи в разные элементы на странице, скажем #profileDisplay, поэтому при использовании, например, функция нажмите я сделать следующее, чтобы привести его в рамки:Вызывающие функции за пределами области действия

$('#profileDisplay').on("click", ".more", function() { 
    ... 
}); 

Как я могу привести функцию, которая обращается плагин, чтобы сделать то же самое? например

$('.glyphicon').not('.folderIcon').tooltipster({ 
    ... 
}); 

Я пытаюсь следующее, но не работает:

$('#profileDisplay.glyphicon').not('.folderIcon').tooltipster({ 
    ... 
}); 

РЕЗЮМЕ загружаю thisFile.php в элемент #profileDisplay

$("#profileDisplay").load('/ajax/actions/thisFile.php'); 

Если я включаю

$('.glyphicon').not('.folderIcon').tooltipster({ 
    ... 
}); 

В ТЕЧЕНИЕ thisFile.php работает нормально, но я использую его в большом количестве страниц, поэтому я хочу, чтобы включить это сказать, в сноске, а оттуда она не работает

+1

Я не совсем понимаю, что вы хотите делать .. вы можете добавить некоторые HTML и сказать, какие элементы вы хотите получить доступ? – Nelson

+0

@Nelson Добавлено резюме, надеюсь, теперь яснее –

+0

Действительно, ваше название, похоже, не соответствует вашему вопросу. Вы хотите делегировать плагин tooltipster или что? Если ya и если плагин tooltipster не реализует какого-либо делегирования, вам нужно повторно инициализировать плагин tooltipster на добавленном добавленном элементе с помощью обратного вызова метода .load() ' –

ответ

2

Если вы хотите выполнить код, когда ваш .load() Ajax вызов завершен, у вас есть два пути, прикрепленные к complete callback из .load() так:

$("#profileDisplay").load('/ajax/actions/thisFile.php', function() { 
    $('.glyphicon').not('.folderIcon').tooltipster({ 
     ... 
    }) 
}); 

или прикрепить к ajaxComplete event на объект Document, этот срабатывает при любой Ajax вызова на странице выполняется:

$(document).ajaxComplete(function() { 
    $('.glyphicon').not('.folderIcon').tooltipster({ 
     ... 
    }) 
}); 
+0

ajaxComplete новичок для меня, но делает именно то, что мне нужно, благодаря! –

0

Вы не можете ожидать какой-либо плагин для работы на элементе который отсутствует на странице из-за того, что вы загружаете его позже, событием клика (если я правильно понял). Вот почему функция работает, когда она находится в thisFile.php.

Что вы должны сделать, это позвонить $('.glyphicon').not('.folderIcon').tooltipster({... в обратном вызове функции загрузки. Таким образом, он будет вызываться, когда ваш контент будет загружен и, следовательно, он будет присутствовать на странице и будет работать нормально.

Не уверен, что ваш плагин имеет что-то вроде метода on, который прослушивает изменения DOM и работает даже с элементами, которые появляются после вызова, но вы также можете проверить это.

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