jQuery:如果在链内
jQuery: if inside a chain?
我有这个
if(noDelay){
$(element).find("." + options.class).remove();
} else {
$(element).find("." + options.class).fadeOut().remove();
}
有没有办法避免重复句子,只在满足给定条件时才添加fadeOut()
?
我不能fadeOut()
移动到链条的末端,这可能会让事情变得更容易。
我在想类似的事情
$(element).find("." + options.class).(if(noDelay) fadeOut()).remove();
提前感谢,狮子座
没有任何您想要的文档,但也许这对您有用:
$(element).find("." + options.class).fadeOut(noDelay ? 0 : 400).remove();
为什么选择 400,因为淡出的默认持续时间为 400 毫秒。(来自文档(
你可以
用$.fn.each来做到这一点:
$(element).find("." + options.class).each(function(){
if (nodelay) {
$(this).remove();
}
else {
$(this).fadeOut().remove();
}
});
然而,它远不如简单地做你已经在做的事情效率低。
编辑:这是另一种方法:
$(element).find("." + options.class)[ noDelay ? "detach" : "fadeOut" ]().remove();
基本上,如果 noDelay 为 true,它将在删除之前分离元素,否则,它将在删除之前淡出它们。应该和你的代码一样高效,只是在 1 行上。
对这样的事情有什么异议吗?
var $found = $(element).find("." + options.class);
if (noDelay){
$found.remove();
} else {
$found.fadeOut().remove();
}
var els = $(element).find("." + options.class);
if (!nodelay) els.fadeOut();
els.remove();
或者你可以使用一个可怕的黑客:
$(element).find(…)[ nodelay ? 'somenoopfunction' : 'fadeOut' ]().remove();
这个特殊的问题:
尝试稍微重新思考一下逻辑,并使noDelay
实际影响延迟。
$(element).find("." + options.class).fadeOut(noDelay ? 0 : 'normal').remove();
虽然我不确定remove()
是否有必要。
当我为另一个问题做fadeOut()
测试时,它似乎隐藏并折叠了元素。 remove()
会从 DOM 中完全删除该元素,但如果您只想让它从文档中消失并让它停止影响文档流(没有间隙(,我不确定是否有必要这样做。
真实目标:
另外,看起来你打算包装jQuery。 你最终会像这样包装代码:
$("someElement").find(".someClass").fadeOut().remove();
。并将其更改为以下内容:
fadeOut("someElement", { "class" : "someClass" });
。或:
var element = new SomeClass("someElement");
element.options.class = "someClass";
element.fadeOut();
除非你打算大量重用该特定元素,否则我认为你会浪费你的时间。 jQuery对于一次性操作具有非常有效的语法,并且您始终可以将匹配的元素存储在临时变量中。
如果你有其他目的,而我错过了,请原谅这种对你的设计:)的入侵
相关文章:
- CORS-如果Jquery-ajax's”;withCredentials:true”;已使用
- 如果jquery脚本's在另一个php页面的php-include语句中使用
- 如果 jquery slide切换元素被切换,则隐藏所有其他元素
- 检查数组中的元素(如果 jQuery 中的元素为空)
- 如果jQuery不抱怨/抛出错误'在选择器中找不到元素
- Javascript:如果jquery GET失败,请更改CSS元素
- 如果Jquery中已筛选,则保持筛选状态
- 如果JQuery Date Picker等于Sunday,则显示不同的选项集
- 如果jQuery中包含特定字符,则打印每个字符串
- 如果jquery$.when语句失败,我该如何重新生成它
- 如果jQuery AJAX调用变量,则保存结果
- 如果jQuery.hide()在Deferred回调中被调用,Callback不会触发
- 如果jquery数组中存在多个单词,请检查
- 如果JQuery's .find()比.filter()快
- jQuery's ajax()不工作,如果jQuery是动态加载的
- 如果jQuery对象为空,则在赋值时将var设置为null
- 如果jQuery对话框是隐藏的,调用函数
- javascript:如果jQuery或CSS是动画,Raphael停止平稳运行
- 选中复选框如果jquery选中了其他具有相同值的复选框
- 隐藏文本框,如果jquery列表有类