jQuery:从html

时间:2015-10-27 14:03:10

标签: jquery html

我正在尝试从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的小提琴。

3 个答案:

答案 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;