奇怪的jQuery格式,任何人都能解释
Strange jQuery formatting, can anyone explain?
我遇到了一个切换复选框的插件(https://github.com/designmodo/Flat-UI/blob/master/js/flatui-checkbox.js)。
然而,它不能与最新版本的jQuery一起正常工作,所以我不得不对它进行调试
有人能解释一下吗?
if ($el.prop('disabled') == false) {
$parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.attr(ch, true);
$el.trigger(e).trigger('change');
}
具体来说,&&
是怎么回事?我知道这是一个AND运算符,但我认为这些运算符只存在于if
语句中。
此外,$el
中的美元是什么意思?设置如下:$el = $(element)
。我理解为什么它需要在右边,但不知道它在左边的作用是什么。
具体来说,与&;?我知道这是一个AND运算符,但我认为这些运算符只存在于if语句中。
是的,它是一个AND操作数,javascript在使用表达式方面非常灵活和可原谅。
另外,美元el是什么意思?它是这样设置的:$el=$(元素)。我理解为什么它需要在右边,但不知道它在左边的作用是什么。
这只是为了表明使用jQuery检索的元素存储在$el
变量中,这只是命名样式的问题,但不是必需的。
基本上,这条线使用的是三元算子
$parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.attr(ch, true
但也可以这样写:
if($parent.toggleClass(ch) && checked){
$el.removeAttr(ch);
} else {
$el.attr(ch, true);
}
&&
是用三元运算符编写的。它基本上是一个简写的if(...){} else {}
语句。它们写如下:
[if statement] ? [if true, return this] ? [else, return this]
Codecademy有一个关于燕鸥的好教程。
$el
只是$(element)
的变量名称。不一定需要$
,该变量也可以很容易地命名为el
。前导$
有时包含在jQuery对象的变量名中,因为它模仿了前导$
的jQuery语法。
这只是一个三元运算符。。。if条件的简写
$parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.attr(ch, true);
这意味着
if($parent.toggleClass(ch) && checked){
$el.removeAttr(ch);
} else {
$el.attr(ch, true);
}
和大约$el。。
它只是一个变量名。我想创建了另一个变量,上面写着
var $el=$(element);
这个缓存jquery对象以获得更好的性能,并且不需要每次提到它时都调用getElementById()
在这种特殊情况下,&&
用于编译布尔var并运行两个语句之一,它等于:
if ($parent.toggleClass(ch) && checked)
$el.removeAttr(ch);
else
$el.attr(ch, true);
事实上,我不知道&&
只允许在if
运算符中使用的语言,但在JS中,你有更多的自由:你可以将其用作检查条件"是否需要我继续":
callback && callback(args);
将仅在定义了callback
时运行;
最后,var名称中的$char只是提到这个var是jQuery包装的对象。没有必要。
关于代码有很多解释,但您试图解决的问题是attr()
的使用在jQuery 1.6之后发生了变化。
设置复选框的checked属性时,应使用prop()
而不是attr()
。并且您不应该使用removeProp()
进行检查,您需要使用$el.prop(ch, false);
$parent.toggleClass(ch) && checked ? $el.prop(ch, false); : $el.prop(ch, true);
或者可以写为
$el.prop(ch, !($parent.toggleClass(ch) && checked) );
?
运算符左侧的表达式只是一个布尔表达式。&&
可以用来构造任何布尔表达式,就像程序员在这里所做的那样。
$el = (element);
的使用者只是为了避免一直做$(element)
,这不仅打字时间更长,而且每次都在幕后调用document.getElementById()
。程序员正在突出地获取一次对对象的引用。这和你写的原因是一样的
var div = document.getElementById('somediv');
并在下面继续使用div
。。。
- 你能解释一下这个阶乘函数是如何工作的吗?
- 你能解释一下为什么这个javascript不正确吗
- 有人能解释一下evaluate()和dragAndDrop()在下面的角度测试代码中调用了什么吗
- 你能解释一下下面的javascript吗?
- 有人能解释一下;r'的对象在下面的代码示例中执行
- '其他'在我的if/else语句中,从来没有发生过——有人能解释为什么吗
- 谁能解释一下这句话的意思吗;var upload_file_count_text=+filenames.length++
- 有人能解释一下如何#ifeq吗/section键使用handle.js工作
- 你能解释一下第 3 章 Eloquent js 中的这个递归解决方案吗?
- 你能解释一下 javascript 中的返回吗?
- 你能解释一下这种奇怪的函数声明行为吗?
- 用“i”替换字符串中的元音..你能解释一下这个表达吗?someText.replace(/[aAeEoOuU]/ig,“
- 谁能解释为什么我的日期函数通过 JS 日期对象给了我错误的转换
- 你能解释一下jQuery如何同时使用$作为函数和对象吗?
- 你能解释一下ngList指令吗?
- 你能解释一下这个JavaScript语法(变量外推)吗?
- 谁能解释一下这个 ajax .each 函数中的项目来自哪里
- ibooks中的event.preventDefault():谁能解释为什么这不起作用
- 对焦功能在这里有什么用?谁能解释下面的代码?我是初学者,所以我需要知道对焦功能的使用
- 奇怪的jQuery格式,任何人都能解释