Причина, по которой ваш код не работает, заключается в том, что вы не передаете функцию в 'onclick' элемента #sec_div
. Вы определили это как onclick="flyout('fb');"
, но функция всплывающего окна ничего не возвращает. Я изменил приведенный ниже код, чтобы flyout
возвращал функцию и инкапсулировал значение data
в своем закрытии, если вы хотите использовать эту же функцию с другими значениями для параметра data
.
Кроме того, у меня есть решение, которое помогает отделить ваш HTML от вашего Javascript. Используя jquery, вы можете сделать это, используя метод delegate
, чтобы связать функцию с любым событием.
HTML:
<div id="first_div">First</div>
JS:
$("body").delegate('#first_div', 'click', replace);
$("body").delegate('#sec_div', 'click', flyout("fb"));
// change replace to:
function replace() {
$(this).replaceWith("<div id='sec_div'>Second</div>");
}
// change flyout to:
function flyout(data){
return (function(){
if (data == "fb") {
$(this).replaceWith("<div>Last</div>");
}
});
}
EDIT:
Согласно последней документации jquery, использование метода live
не рекомендуется, вместо него используйте delegate
.