ウェブサイトの一部を乗り継ぎで表示したい。ユーザーがJavaScriptを持っていない場合、レイオーバーは通常のWebサイトとして表示されます。
でWebサイトを取得していgetController
ますが、で問題が発生しhandleLinksAndForm
ます。
$("#Popup > a").click(function(e){
e.preventDefault();
getController($(this).attr("href").substr(1),element);
});
これは意図したとおりに機能します。Popover divのAnchor要素をクリックするたびに、デフォルトのアクションが阻止され、新しいWebサイトがPopoverにロードされます。
$("#Popup > form").each(function() {
alert(this.name);
});
$("#Popup > form").submit(function(e) {
alert("form");
e.preventDefault();
getPostController($(this).attr("action"),$(this).serialize(),element);
return false;
});
ただし、この部分は機能しません。foreach部分も.submit()もありません。
だから私の質問は:私の間違いは何ですか?すべてのフォームを使用$("form").each(function() {...
すると認識されますが、追加のセレクター#Popupを追加すると、何も認識されません。
完全なコード:
function getController(ctrl,element)
{
$.get('/service/controller/' + ctrl, function(data){
handleLinksAndForm(data,element)
})
}
function getPostController(ctrl,args,element)
{
$.post('/service/controller/' + ctrl,args, function(data) {
handleLinksAndForm(data,element)
});
}
function handleLinksAndForm(data,element)
{
element.html(data);
element.prepend("<div id=\"popupClose\">x</a>");
centerPopup();
$("#popupClose").click(function(){
disablePopup();
});
$("#Popup > a").click(function(e){
e.preventDefault();
getController($(this).attr("href").substr(1),element);
});
$("#Popup > form").each(function() {
alert(this.name);
});
$("#Popup > form").submit(function(e) {
alert("form");
e.preventDefault();
getPostController($(this).attr("action"),$(this).serialize(),element);
return false;
});
}