Javascript 如果函数不返回false?

Javascript 如果函数不返回false?,javascript,jquery,Javascript,Jquery,我有以下点击事件: 我使用日志查看变量和“planungtext”元素的内容。它们是完全相同的,但是if函数没有按照预期的那样工作,因为它仍然在使用它 首次单击元素之前未设置$current 我在这里做错了什么吗?假设$current是另一个jQuery对象,您无法比较这样的对象。但是,您可以比较它们的内部值。更改: $current != $('#planungtext') 致: 假设$current是另一个jQuery对象,则无法比较这样的对象。但是,您可以比较它们的内部值。更改: $cu

我有以下点击事件:

我使用日志查看变量和“planungtext”元素的内容。它们是完全相同的,但是if函数没有按照预期的那样工作,因为它仍然在使用它

首次单击元素之前未设置$current

我在这里做错了什么吗?

假设$current是另一个jQuery对象,您无法比较这样的对象。但是,您可以比较它们的内部值。更改:

$current != $('#planungtext')
致:

假设$current是另一个jQuery对象,则无法比较这样的对象。但是,您可以比较它们的内部值。更改:

$current != $('#planungtext')
致:


如果比较2个html输入元素,可能只需要检查id属性

因为planungtext已经是唯一标识符

$($current).attr('id') !== 'planungtext'

如果比较2个html输入元素,可能只需要检查id属性

因为planungtext已经是唯一标识符

$($current).attr('id') !== 'planungtext'

这两个jQuery对象指向相同的DOM元素,但它们是不同的数组jQuery对象本质上只是幕后的数组,带有额外的内容

使用jQuery是为了测试同一个选择器是否与它们匹配:

if(!$current.is('#planungtext')){
手动执行该检查的最快方法是:

if ($current[0].id !== '#planungtext'){
注释中提到,$current是一个jQuery变量,是一个良好的命名标准,但最初未定义,在这种情况下,几乎所有发布的解决方案都将崩溃。您需要将$current初始化为空jQuery对象,以提供最一致的行为jQuery对象不应未定义,否则需要重新包装它。e、 g.使用$$current,我不建议将其作为未初始化jQuery变量的解决方案:

var $current = $();   // $() returns an empty jQuery object

这两个jQuery对象指向相同的DOM元素,但它们是不同的数组jQuery对象本质上只是幕后的数组,带有额外的内容

使用jQuery是为了测试同一个选择器是否与它们匹配:

if(!$current.is('#planungtext')){
手动执行该检查的最快方法是:

if ($current[0].id !== '#planungtext'){
注释中提到,$current是一个jQuery变量,是一个良好的命名标准,但最初未定义,在这种情况下,几乎所有发布的解决方案都将崩溃。您需要将$current初始化为空jQuery对象,以提供最一致的行为jQuery对象不应未定义,否则需要重新包装它。e、 g.使用$$current,我不建议将其作为未初始化jQuery变量的解决方案:

var $current = $();   // $() returns an empty jQuery object

您可能会解释为什么不能比较两个类似的jQuery对象,以便人们理解为什么需要您的解决方案以及为什么可以比较两个DOM元素。OP遗漏了一个小细节,$current既是一个jQuery变量,也没有初始化,因此会在[0]上崩溃。您可以解释为什么不能比较两个类似的jQuery对象,以便人们了解为什么需要您的解决方案以及为什么可以比较两个DOM元素。OP遗漏了一个小细节,$current既是jQuery变量,也没有初始化,因此会在[0]上崩溃。id属性永远不会有前导字符。OP一定把它改成工作了。哦,是的,对不起。忘了说这个了。这当然是错误的。请编辑您的答案还有一个冗余的$about$当前变量,前缀为$通常是jQuery对象。它也应该是!==对于所示的示例:当我离开$时,它表示无法读取未定义的属性。使用$it WORKSID属性将永远不会有主角。OP一定把它改成工作了。哦,是的,对不起。忘了说这个了。这当然是错误的。请编辑您的答案还有一个冗余的$about$当前变量,前缀为$通常是jQuery对象。它也应该是!==对于所示的示例:当我离开$时,它表示无法读取未定义的属性。使用$it Works虽然有许多变通方法,但比较jQuery中jQuery对象的正确方法是:在下面添加答案。尽管有许多变通方法,比较jQuery中jQuery对象的正确方法是:在下面添加答案。嘿,这不起作用,因为我的$current,在第一次单击某些内容后定义。这样,控制台激发的无法读取属性为未定义或某物。将$current初始化为$jQuery空对象。嘿,这不起作用,因为我的$current是在第一次单击某个对象后定义的。这样,控制台激发的cannot read属性为undefined或sth。将$current初始化为$,这是一个空的jQuery对象。