我已经在其他问题和Google上进行了大量研究,到目前为止还没有任何效果。我有一些JavaScript / jQuery经验,并认为自己精通PHP。
我正在开发一个使用jQuery从导航菜单加载页面的工作应用程序。到目前为止,这是该元素的设置:
<menu>
<button value="home">HOME</button>
<button value="process_sheets">PROCESS SHEETS</button>
<button value="admin">ADMINISTRATION</button>
<button value="faq">FAQ</button>
<div id="search-container"></div>
</menu>
<script>
$("menu button").each(function() {
$(this).on("click", function() {
$.get(null, {
page: $(this).val()
}, function(data) {
$("article#content").html($.parseHTML(data));
}, 'html');
});
});
</script>
问题是我在一个页面上有一个简单的手风琴,其代码在通过菜单加载时无效。
这是手风琴代码:
$(function($) {
$('#accordion').find('.accordion-toggle').on('click', function(){
$(this).next().slideToggle('fast');
$(".accordion-content").not($(this).next()).slideUp('fast');
});
});
<h2>Process Sheets</h2>
<div id="process-sheets-accordion">
<h4 class="accordion-toggle">GE</h4>
<div class="accordion-content">
<?php include 'static_section_form.php'; ?>
</div>
<h4 class="accordion-toggle">5"</h4>
<div class="accordion-content">
<p>Vivamus facilisisnibh scelerisque laoreet.</p>
</div>
etc...
</div>
答案 0 :(得分:3)
如果有问题的代码实际上是在ajax调用返回的文本中,那么问题是当你通过get
加载并执行解析并将其添加到页面时,它不会被执行
jQuery有一个专门为此做的功能,但是:load
:
$("menu button").each(function() {
$(this).on("click", function() {
$("article#content").load(null, {page: $(this).val()});
});
});
load
将使用ajax检索页面,从中提取脚本,将内容放入元素中,然后执行脚本。
以上将使用POST,因为我们将对象作为第二个参数传递,但是当您使用GET时,我们应该只将page
添加到URL:
$("article#content").load(location.pathname + "?page=" + encodeURIComponent($(this).val()));
...或将其作为字符串传递:
$("article#content").load(location.pathname, "page=" + encodeURIComponent($(this).val()));
如果您没有提供数据对象,load
默认为GET而非POST。
附注:我之前从未见过null
$.get
的网址。我已将其复制到上面的load
来电,但我认为null
无效(在任何一个地方),因为文档中没有任何说法可以是一个字符串。使用实际的网址,例如上面GET示例中使用的location.pathname
我。
答案 1 :(得分:0)
这是代码的工作片段,完全符合我的预期:
$("menu button").each(function() {
$(this).on("click", function() {
$("#content").load(window.location.pathname + "?page=" + encodeURIComponent($(this).val()));
});
});