0

我有一个页面,在这个页面中,我只能根据第一个表单中的第一个输入来搜索元素的存在

<input type=“text”/><!--第一个输入--><按钮><div><form><输入值=“3”/></form><!--第一形式--><form><输入值=“3”/></form></div>

和脚本

$(“按钮”).点击(函数(){if($(this).next().children(“form”).first().has(“input[value='”+$(this).prev().val()+“']”))警报(“存在”);其他的警报(“缺席”);});

但它不起作用

2
  • 如果您指定了一些id,那么查找元素引用会更容易。。。你能控制标记吗? 评论 2012年5月17日12:16
  • 根据您的代码推断,您需要比较前两个输入的内容,以确保它们完全匹配。这是正确的假设吗? 评论 2012年5月17日12:33

2个答案2

重置为默认值
2

您可以通过检查查询返回的集合的长度来检查元素是否存在:

例如,如果我要检查我是否有表格:

var forms=$('form').length//0如果没有,至少1如果有
1
  • 我还有一个没有在这里列出的div,它也有一些动态代码
    – 用户1432124
    评论 2012年5月17日12:18
0

问题是.has()方法它不返回布尔值,而是返回一个jQuery对象,特别是“从匹配元素的子集构造一个新的jQuery目标”。您需要检查该对象的长度,以查看是否有任何元素匹配:

if($(this).next().childs(“form”).first().has(“input[value='”+$(this).prev().val()+“']”).length!=0)

演示:http://jsfiddle.net/mmQHB/

2
  • 感谢ssssssssSSssssssss
    – 用户1432124
    评论 2012年5月17日12:33
  • 不客气。请注意,尽管使用.has()方法以正确的方式解决了当前的问题,如果用户输入引号,将字段中用户输入的值直接连接到jQuery选择器中是行不通的。此外,我怀疑“输入[value='…']”选择器可能只针对原始值属性的值进行选择,而不是针对输入的当前值进行选择(至少,当我在Chrome中尝试时,似乎就是这样)。
    – nnnnnn
    评论 2012年5月17日12:37

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.