我目前正在創建一個包含各種小部件的網站,我希望能夠隨時添加/刪除這些小部件。將「小部件」添加到網站
我使用jQuery來實現這一點(至少計劃)。
最簡單的小部件是登錄小部件。看起來像這樣:
<div id="widget1">
<div class="close"></div>
<div id="widget1_title"></div>
<div id="widget1_content">
<form method='post' action='index.php'>
<div id="widget1_username">
Username<input type='text' maxlength='16' name='user' value='' />
</div>
<div id="widget1_password">
Password<input type='password' maxlength='16' name='pass' value='' />
</div>
<div id="widget1_submit">
<input type='submit' value='LOGIN' />
</div>
</div>
</div>
這存儲在一個名爲login_widget.html的文件中。由於登錄的微件是應該在網站上預先加載(而不必把它的用戶),我有我的index.php文件看起來像這樣:
<body>
<div id="container">
<div id="content">
<div id="sidebar">
<div id="login-sidebar"></div>
</div>
<div id="header">
<div></div>
<div></div>
<div id="header-logo"></div>
</div>
<div id="main-content">
<div id="widget1">
<div class="close"></div>
<div id="widget1_title"></div>
<div id="widget1_content">
<form method='post' action='index.php'>
<div id="widget1_username">
Username<input type='text' maxlength='16' name='user' value='' />
</div>
<div id="widget1_password">
Password<input type='password' maxlength='16' name='pass' value='' />
</div>
<div id="widget1_submit">
<input type='submit' value='LOGIN' />
</div>
</div>
</div>
</div>
<div id="footer">
</div>
</div>
</div>
</body>
(原文很<?php include_once('login_widget.html'); ?>
)。
然後我有一個按鈕設置,我按下從文件加載代碼。
這裏是jQuery代碼:
$(document).ready(function(){
$(".close").click(function(){
$(this).parent().remove();
});
$("#login-sidebar").click(function(){
$.ajax({
url: 'login_widget.html'
}).done(function(data) {
$('#main-content').append(data);
});
});
});
而現在的問題。這是因爲它發佈的HTML代碼,它顯示在網站上,但問題是,「關閉按鈕」不再工作。所以我無法使用名爲「close」的類刪除新創建的html元素。
我對jQuery很陌生,但我認爲這是一種做法,但我錯過了什麼?
在此先感謝!
所以你不實際添加的小部件,直到頁面加載後? '$(jQuery).click()'函數不適用於動態添加的元素。根據您的jQuery版本,您可以使用'.live()'函數([.live()文檔](http://api.jquery.com/live/))或'.on()'函數([.on()documentation](http://api.jquery.com/on/))。 – baacke
@baacke假設他至少擁有委託方法,因爲他使用了延期對象。 –