Javascript jQuery:this=$(this)

Javascript jQuery:this=$(this),javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我想创建一个jQuery插件,该插件将确定一个元素是属于某个特定类还是父元素属于某个特定类 例子 给定以下HTML: <div id="root"> <div id="a" class="myClass"> <div id="b"></div> </div> </div> 解决方案A(工程) 解决方案B(不起作用) 解决方案C(不起作用) 问题: 但是,解决方案A在Chrome

我想创建一个jQuery插件,该插件将确定一个元素是属于某个特定类还是父元素属于某个特定类


例子 给定以下HTML:

<div id="root">
     <div id="a" class="myClass">
          <div id="b"></div>
     </div>
</div>

解决方案A(工程) 解决方案B(不起作用) 解决方案C(不起作用)
问题: 但是,解决方案A在Chrome中引发以下异常:

Uncaught ReferenceError: Invalid left-hand side in assignment 
由于此错误,我尝试解决方案B和C失败

这就提出了以下问题:

  • 如果出现异常,为什么解决方案A会起作用
  • 为什么解决方案B不起作用
KhanhTO指出解决方案C确实有效。结果表明,异常有助于产生预期的结果。换言之;2错即是对

正如BlackSheep所指出的:这是一个更好的方法:

$.fn.isOrParent = function (selector) {    
  return this.closest(selector).length !== 0;
}

这是一个特殊的关键字。。。你不能给它赋值我知道,这更像是一场意外。但是,它的工作原理让我很困惑。这不是
最近的
方法所做的吗?我想你应该看看
最近的
它做了你想做的事情。而
$(这)
jquery原型函数内部是不必要的
$.fn.isOrParent = function (selector) {
    $this = $(this);
    if ($this.is(selector))
        return true;
    if ($this.parents(selector).length !== 0)
        return true;
    return false;
}
$.fn.isOrParent = function (selector) {
    if (this.is(selector))
        return true;
    if (this.parents(selector).length !== 0)
        return true;
    return false;
}
Uncaught ReferenceError: Invalid left-hand side in assignment 
$.fn.isOrParent = function (selector) {    
  return this.closest(selector).length !== 0;
}