请参阅this基本示例:
<div id="cont">
<input type=button value='button'>
</div>
<input type=button value='button'>
脚本:
$('input').click(function(){
console.log($(this));
console.log($('#cont').has($(this)));
console.log($('#cont').has($(this)).length);
console.log("---");
});
在两个按钮中单击,根据console.log的$(this)
值相同:
[<input type="button" value="button">]
他们为什么会给出不同的结果?
换句话说,当我控制log $(this)时,某些信息没有表示。此信息可能指向元素唯一ID。但它是什么,它存储在哪里?为什么它没有显示在日志中?
答案 0 :(得分:0)
由于按钮具有相同的标记,因此它看起来只是一样。
答案 1 :(得分:0)
我想我明白你在问什么。在jQuery函数中使用this
与事件发生的元素有关。在您的情况下,单击事件发生的特定输入。虽然您的两个输入都具有相同的HTML,但它们是不同的元素。因此,如果您点击#cont
div之外的那个,console.log($('#cont').has($(this)));
不应返回任何内容。
答案 2 :(得分:0)
根据API规范
“给定一个表示一组DOM元素的jQuery对象,.has()方法从匹配元素的子集构造一个新的jQuery对象。提供的选择器针对匹配元素的后代进行测试;元素如果任何后代元素与选择器匹配,它将包含在结果中。“
'$('#cont')。has($(this))'的返回结果不是布尔值而是匹配对象。
在你的情况下,id为'cont'的div包含第一个按钮但不包含第二个按钮。
按下第一个按钮返回has函数&amp;中的包含div。按第二个对象不返回div,因为div不包含按钮