2012-06-11 2 views
1

Я привязки пользовательского события на кнопки, чтобы применить Jquery пользовательский интерфейс кнопки плагин как:особых событий в JQuery

 $(document).ready(function() { 
     $(".uibutton").live("CustomEvent", function() { $(this).button(); }); 
     $(".uibutton").trigger("CustomEvent"); 
     }); 

     <input type="button" class="uibutton" > 

Теперь это работает хорошо для кнопки, которые являются present in the MarkUP но кнопки, которые created dynamically с class uibutton, это не работает. Может кто-нибудь, пожалуйста, скажите мне, почему?

+0

Какую версию jQuery вы используете? 'live' поддерживает пользовательские события с 1.4. Если вы используете более позднюю версию, вы должны использовать 'on' или' delegate', хотя, поскольку 'live' устарел. –

+0

Вы запускаете событие после добавления новых кнопок? – Musa

+0

У вас есть ошибка в вашем коде, закройте метку quote в '$ (". Uibutton) ' –

ответ

1

$ ("UIButton) .trigger ("CustomEvent");

Там отсутствует закрывающий котировку

это должно быть так:

$. (" UIButton ".). триггер («CustomEvent»);.

попробовать

2

Как уже упоминалось в комментариях, проблема, кажется, что даже если пользовательское событие успешно связан даже для DYNAM созданных с помощью класса uibutton, событие все равно нужно будет запускать снова каждый раз, когда будет создана новая кнопка. Функция .trigger() в вашей функции .ready() будет влиять только на существующие в данный момент кнопки.

1

Я знаю, что вы упомянули, используя on() и не получится работать, но убедитесь, что вы использовали его, как это:

$(document).on("click", ".uibutton", function() { 
    /// My code.... 
}); 

И проверить его снова.

Дело в том, что этот обработчик необходимо добавить к элементу document, что может быть неясно из документации. Только так вы сможете использовать on() точно так же, как live(). И, пожалуйста, используйте версию on(), так как последняя будет удалена из jQuery в какой-то момент.