像jQuery.toggle(布尔)存在吗?
我写了很多类似于下面的代码。 它基本上根据某种条件来切换元素。
在下面的组装示例中,条件是“如果agree
checkbox被选中并且name
字段不为空”。
$("button").click(function() { if ($("#agree").is(":checked") && $("#name").val() != "" ) { $("#mydiv").show(); } else { $("#mydiv").hide(); } });
我希望有某种类似于这样的jQuery函数。
$("button").click(function() { var condition = $("#agree").is(":checked") && $("#name").val() != "" ); $("#mydiv").toggle(condition); });
有没有这样的东西呢? 或者除了第一个例子之外,还有其他的方法可以用更lessif-else-ish
方法来实现吗?
好吧,我是个白痴,在提问之前需要RTM。
jQuery.toggle()可以让你做这个开箱即用。
$("button").click(function() { var condition = $("#agree").is(":checked") && $("#name").val() != "" ); $("#mydiv").toggle(condition); });
首先,让我们看看我是否理解你想要做的事情…你想看一下checkbox的状态(选中或不选),并根据该值的状态隐藏或显示第二个div。
定义这种风格:
.noDisplay { display:none; }
使用这个JavaScript:
$("button").click(function() { $("#mydiv").toggleClass("noDisplay", $("#name").val() == ""); });
jQuery上的文档可以在这里find: http : //api.jquery.com/toggleClass/
你可以自己写这个函数。
function toggleIf(element, condition) { if (condition) { element.show(); } else { element.hide(); } }
然后像这样使用它:
toggleIf($("button"), $("#agree").is(":checked") && $("#name").val() != "");
如果toggle()
不适合你(例如,因为它animation),你可以写一个小的jQuery插件,如下所示:
$.fn.toggleIf = function(showOrHide) { return this.each(function() { if (showOrHide) { return $(this).show(); } else { return $(this).hide(); } }); };
然后像这样使用它:
$(element).toggleIf(condition);