2015-05-23 3 views
2

Я искал это в Интернете, я нашел ответы, которые были полезны, но их было недостаточно для решения моей проблемы (например, Similar Problem but no solution provided for my problem)JQuery не работает над новыми добавленными элементами в Dom с плагином, как JRate Plugin

Я использую JRate плагин, Я добавляю div внутри div с помощью JQuery. Проблема в том, что когда я добавляю его с помощью jQuery и использую функции JRate, они не работают. Но они работают без добавления нового div.

Я знаю, как заставить его работать. Мне нужно будет использовать $(document), но я не знаю, как использовать его с этим кодом.

Вот HTML

<div class="jRate"></div> 

Вот мой Jquery

$(".jRate").jRate({ 
    onSet: function(rating) {        
     alert(rating); 
    } 
}); 

Вот мой добавления кода

var divjRate = "<div class='jRate'></div>"; 
$(divjRate).appendTo('.fb-jRate'); 

Может ли один скажите мне, как я могу использовать $(document) здесь или любой другое альтернативное решение, которое у вас есть.

ответ

1

Вам нужно добавить HTML-элемент первой, так что он зарегистрирован в DOM. Затем, вы можете вызвать jRate на нем

var divjRate = "<div><div class='jRate'></div></div>"; 

// Append new element to container of choice 
$(divjRate).appendTo('.fb-jRate'); 

// Use plugin on new element 
$('.jRate').jRate({ 
    onSet: function(rating) {        
     alert(rating); 
    } 
}); 
+0

не работает ... – usama

+0

ОК, следующий шаг. Мне нужно воспроизвести его. Можете ли вы поместить его в скрипку или дать мне сайт, на котором вы используя его на? – AmmarCSE

+0

Я постараюсь дать вам скрипку. – usama

0

Решение, с которым вы связались, относится к прослушивающим событиям событий, что не соответствует типичному плагину jQuery, который обычно включает замену DOM и другие вещи.

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

Например, если вы добавляете новый контент с вызовом AJAX, вы можете применить этот метод к недавно добавленному контенту в функции jqXHR.done().


Update: OP при условии, с некоторым кодом, так что я, добавив способ инициализации плагина для вновь добавленного элемента DOM:

// Declare new element 
var divjRate = "<div><div class='jRate'></div></div>"; 

// Use plugin on new element 
$(divjRate).find('.jRate').jRate({ 
    onSet: function(rating) {        
     alert(rating); 
    } 
}); 

// Append new element to container of choice 
$(divjRate).appendTo('.fb-jRate'); 
+0

вот мой код прямо сейчас Добавление данных Вы можете сказать, как я могу заставить его работать уаг divjRate = «

»; \t \t $ (divjRate) .appendTo ('. Fb-jRate'); – usama

+0

Не работает @Terry – usama

+0

@usama Возможно, из-за проблемы с селектором. Попробуйте мой обновленный ответ. – Terry

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