我正在尝试从jQuery上的html解析<section>
,具体取决于用户在表单中输入的值(#term),其中包含以下代码:
HTML:
<section id="fetch">
<input type="text" placeholder="Please enter your name here" id="term" />
<button id="search">ENTER</button>
</section>
<section id="content">
<div id = "figures">
<script>
</script>
</div>
<div id ="name">
<div id = "nameBox">
</div>
<div id = "nameText">
</div>
</div>
<div id = "message">
<div id = "messageBox">
</div>
<div id = "messageText">
</div>
</div>
</section>
jQuery的:
$('#term').focus(function(){
var full = $("#content").has("<section>").length ? true : false;
if(full == false){
$('#content').empty();
}
});
我想知道语法是否有任何问题我一直有控制台错误
TypeError:a未定义
如果有人能够向我发现我的问题,那将是非常好的。
此外,您可能希望查看我创建的完整代码here的小提琴。
答案 0 :(得分:3)
我怀疑你是否正在试图找出“&#39;部分&#39;存在。
在这种情况下,你应该可以写这个。
var full = $("#content section").length
html标签的正确选择器是标签本身,没有尖括号。 $(div)
选择所有div的方式相同。
此外,无需添加? false : true
部分。如果元素不存在,则长度将计算为0,这相当于false。
答案 1 :(得分:2)
根据jQuery .has方法定义:
将匹配元素集减少到具有后代的元素集 与选择器或DOM元素匹配。
尝试使用var full = $("section[id=content]").length ? true : false;
代替var full = $("#content").has("<section>").length ? true : false;
。
注意: $("#content").has("<section>")
将搜索section
内的#content
元素,该元素始终为false。
希望这会有所帮助。
答案 2 :(得分:1)
错误消息中的a
来自jQuery的缩小版本,其原因是您尝试使用$.each
作为第一个参数调用undefined
。
// getName does not exist - it is undefined!
var getName = $.each(getName, function (content, json) {
console.log(json.name);
console.log(getName[content].id);
});
在任何情况下,$.each
都没有明确定义返回值,因此代码中存在第二个(潜在的)错误。
这与你如何检测section
元素的存在无关,这应该像以下一样简单:
var full = $("#content").find("section").length > 0;