【发布时间】:2010-12-26 07:50:33
【问题描述】:
我目前这样做是为了检查两个元素之一是否存在:
if ($(".element1").length > 0 || $(".element2").length > 0) {
//do stuff...
}
有没有更好的方法来重写它?我的意思是,.length 和 .length > 0 一样吗?
【问题讨论】:
-
您可能会发现这个question 回答了您的问题。
我目前这样做是为了检查两个元素之一是否存在:
if ($(".element1").length > 0 || $(".element2").length > 0) {
//do stuff...
}
有没有更好的方法来重写它?我的意思是,.length 和 .length > 0 一样吗?
【问题讨论】:
$.fn.exists = function(ifExists) {
return this.length ? ifExists.call(this, this) : this;
};
用法:
$('.element1, .element2').exists(function(els) {
// this and els refers to $('.element1, .element2')
});
【讨论】:
See Extremely updated version of this plugin here!现在使用回调函数,因此您可以选择保持可链接性。可以完全替代if语句或者仍然可以在if语句
中使用您可以为此创建一个非常简单的 jQuery 插件,如下所示:
(function($) {
if (!$.exist) {
$.extend({
exist: function(elm) {
if (typeof elm == null) return false;
if (typeof elm != "object") elm = $(elm);
return elm.length ? true : false;
}
});
$.fn.extend({
exist: function() {
return $.exist($(this));
}
});
}
})(jQuery);
使用
// With ID
$.exist("#eleID");
// OR
$("#eleID").exist();
// With class name
$.exist(".class-name");
// OR
$(".class-name").exist();
// With just tag // prolly not best idea aS there will be other tags on site
$.exist("div");
// OR
$("div").exist();
使用你的 If 语句
if ($(".element1").exist() || $(".element2").exist()) {
...stuff...
}
当然,这个插件还可以进一步扩展,变得更加花哨(一次处理多个调用,基于婴儿车创建不存在的元素),但就目前而言,它做了一个非常简单、非常需要的功能。 .. 这个元素存在吗?返回True或False
【讨论】:
只需使用 .each()。
$(".element1").each(function(){
//Do Something here
}
简单...
【讨论】:
if ($(".element1").is('*') || $(".element2").is('*')) {
// code
}
编辑(每条评论)在一次调用中按多个类选择元素:
if ($(".element1, .element2").is('*')) {
// code
}
【讨论】:
$(".element1, .element2")。
所有 jQuery 元素都有.length 属性。你可以去:
if ($('img').length) // Implies: If this element exists..
【讨论】:
!$.isEmptyObject($.find('#urId'))
如果元素存在则返回 "true",否则返回 False
干杯 :)
【讨论】:
【讨论】: