Можно ли извлечь элемент якорного класса jQuery с помощью .load()?

#jquery

#jquery

Вопрос:

Я использую .load() для переноса текста с одной страницы на другую. Один конкретный div, который я «загружаю», имеет модальный, запускаемый якорным классом. Однако этот класс привязки не функционирует после «загрузки». Есть ли какой-либо способ обойти это?

Я опубликовал простой пример здесь: http://temp.kissr.com /

Вы можете видеть, что при нажатии ничего не происходит. Однако это страница, с которой извлекается зеленый прямоугольник и сопровождающее его предупреждение: http://temp.kissr.com/div_being_loaded.html

Просмотрите источник на этих страницах, чтобы проверить мой метод .load() . Мой подход также опубликован здесь:

 <script>
    $(function() {
        $('#grab_div').load('div_being_loaded.html .load');
    }); 
</script>

<div id="grab_div"></div>
  

И это div, который загружается с отдельной страницы (div_being_loaded.html ), но расположенный на том же корневом уровне.

 <div class="load">
    <a class="alert">Click for Alert</a>
</div>

<script>
    $("a.alert").on("click", function() {
        alert( "Success" );
    });
</script>
  

Спасибо, что взглянули!

Ответ №1:

Привязка события щелчка выполняется до того, как содержимое присутствует внутри DOM. У вас есть 2 решения.

1) Вы можете дождаться загрузки содержимого :

 $(function() {
    $('#grab_div').load('div_being_loaded.html .load', function(){
        $("a.alert").on("click", function() {
            alert( "Success" );
        });
    });
}); 
  

2) или вы можете использовать делегирование событий :

 $("#grab_div").on("click", 'a.alert', function() {
    alert( "Success" );
});
  

Ответ №2:

Заменить:

 $('#grab_div').load('div_being_loaded.html .load');
  

с помощью

 $('#grab_div').load('div_being_loaded.html');
  

(Или вы разместили весь script блок внутри своего <div class="load"> .)

Добавляя .load класс (from <div class="load"> ), вы загружаете только этот бит HTML, а не script блок.