Here是Jquery库的.toggleClass()方法的API。我不确定如何实现开关部分。开关部分是否应该导致布尔值,如果是,那么它是否实现?
所以如果代码是:
`$('selector').toggleClass('class-to-be-toggled' , ($(this).hasClass('white')))`
并且($(this).hasClass('white'))
评估为true,然后.toggleClass()
将执行,如果评估为false,那么.toggleClass()
将无法执行?
或者我误解了switch
的目的。
答案 0 :(得分:3)
switch boolean确定是添加还是删除类。如果switch参数为true,则将添加该类,如果为false,则将删除该类。
直接来自jQuery doc:
.toggleClass( className, switch )
className - One or more class names (separated by spaces)
to be toggled for each element in the matched set.
switch - A Boolean (not just truthy/falsy) value to determine
whether the class should be added or removed.
jQuery doc page上甚至还有一个代码示例,显示了switch参数的使用。
如果根本没有传递开关布尔值,那么该类将被添加(如果尚未存在)并且如果它存在则被移除(因此它将被切换)。
答案 1 :(得分:3)
如果省略该参数,将根据当前不存在的内容添加或删除该类。如果传递参数,则无论元素的当前状态如何,都将根据参数添加或删除类。
例如,这个:
$(':checkbox').click(function() {
$(this).parent().toggleClass('selected', $(this).is(':checked'));
});
几乎只是写作的简写:
$(':checkbox').click(function() {
if($(this).is(':checked')) {
$(this).parent().addClass('selected');
} else {
$(this).parent().removeClass('selected');
}
});
你可能会反对大多数时候你只是
$(':checkbox').click(function() {
$(this).parent().toggleClass('selected');
});
可能就是这种情况,但如果有任何 else 而不是检查复选框可能会干扰selected
类,那么您的切换将面临失去同步的风险,如果你没有传递一个参数,准确指出你想要它做什么。
答案 2 :(得分:0)
如果您的第二个参数(开关)为true,则添加该类(如果为false则添加该类
)答案 3 :(得分:0)
.toggleClass()的第二个参数是三态参数。
$x.toggleClass('c', true)
到添加类c
$x.toggleClass('c', false)
以删除类c
$x.toggleClass('c')
来反转是否存在c
(如果存在则添加$x.toggleClass('class', undefined)
typeof switch == 'boolean'
也会反转
第四个备选方案未在.toggleClass()中进行记录,但是guaranteed可以使用,因为that's how optional function parameters work。
jQuery源代码中的区别似乎是Boolean(0)
。
顺便将false
像null
一样对待,这样也将删除该类。
除了省略switch参数之外,
看来您可以通过42
或undefined
来执行一些反向切换动作。
但是当然,您不应该在undocumented功能上进行编码。
如果您要明确切换,我建议传递BEGIN
IF NOT EXISTS (SELECT * FROM innehall
WHERE Produkter = 'kyckling'
AND typ = 'Sallader')
BEGIN
INSERT INTO innehall (Produkter, typ)
VALUES ('kyckling', 'Sallader')
END
END;
。