通过 JQuery,我正在创建一些搜索功能,以便在单击搜索提交按钮时,代码应该执行以下操作:
- 将搜索字符串传递到变量中。
- 查找包含搜索字符串变量的任何部分元素并获取该部分的 ID 属性。
- 将不同页面的 url 加载到特定 div 中,该 url 以包含部分的 ID 为目标,以便 div 仅加载包含匹配字符串的部分,而不是整个 html 页面。这个其他 html 页面只是我域中的另一个页面。它包含一个带有几个部分元素的主体,每个部分元素都有一个唯一的 ID 和一些文本。它确实在其脚本标记中链接到 JQuery 文件。
我能够实现上述#1,但我的代码中的#2似乎存在问题,因为#3加载永远不会发生。我添加了一个调试警报,当返回存储具有匹配字符串的部分的 foundId 变量时显示“未定义”。至于 url 本身的加载,这个 url 应该能够很好地加载到 div 中,就像我尝试加载整个 html 页面而不是匹配部分时一样,这是有效的。我确实想为此使用 load() 而不是 append() 。
感谢你们中可爱的人是否能以我的方式指出错误:
主.html:
<div id="wrap">
<form action="#" id="search-form" method="get">
<fieldset>
<input type="search" id="search-box" name="search" value=""/>
<input type="submit" id="search-submit" value="Show me"/>
</fieldset>
</form>
<div id="info_display"></div>
</div>
info.html 中的示例片段(应该加载到 main.html 上的 div 的辅助页面)
<body>
<section id="content-good">
<header>Good Thing</header>
<p>Description of thing</p>
</section>
<section id="content-great">
<header>Great Thing</header>
<p>Description of thing</p>
</section>
<section id="content-best">
<header>Best Thing</header>
<p>Description of thing</p>
</section>
</body>
查询:
$(document).ready(function() {
var query;
var foundId;
$('#search-submit').click(function(e){
e.preventDefault();
query = $("#search-box").val();
if (query.length > 0) {
foundId = $('section:contains('+query+')').attr('id');
$("#info_display").load('info.html #' + foundId);
}
else {
alert("Oops, you forgot to enter a search term.");
}
});
});
谢谢!