if ($('#myElement').length > 0) {
// it exists
}
或者将其制作成一个带有回调的精美函数
// Tiny jQuery Plugin
// by Chris Goodchild
$.fn.exists = function(callback) {
var args = [].slice.call(arguments, 1);
if (this.length) {
callback.call(this, args);
}
return this;
};
// Usage
$('div.test').exists(function() {
this.append('<p>I exist!</p>');
});
您不需要“> 0”,您可以简单地写
if ( $('#myElement').length ) {
// 它存在
}
不正确,因为 jQuery 始终返回一个长度为 0 的对象
这是真的。如果元素存在:length > 0,并且条件为真。
如果元素不存在:length = 0,并且条件为假
这是正确的。您不需要说 length > 0,因为 1 = true,0 = false。
Eliazer,您可能只是听到有人说“JQuery 始终返回一个对象”,因此您认为 jQuery 的每个函数都返回一个对象。jQuerys 默认选择器“$()”始终如此。但是,它的函数并不总是……例如“has”和“is”……或者“length”
Length 返回 0 或 1,并且由于 1 = true,0 = false。
非常好。
感谢 Nathan。
甚至更容易和可重用,您可以定义一个函数
jQuery.fn.exists = function() { return this.length>0; };
并在任何地方使用它,就像这样
if ($(‘#myElemento).existe()) { … }
嗯,我认为我在您评论的最后一行中看到一个拼写错误
if ($(‘#myElemento).existe()) { … }
应该是
if ($(‘#myElemento).exists()) { … }
(existe 与 exists 相比)
更好,
if($(element).size()){
// …
}
这根本不好。
jQuery#size
只是返回length
属性,所以只需保存函数调用并直接访问length
属性。不错的教程 :P
但是为什么不使用
$('#myElement')[0]
? - 返回第一个 DOM 元素或undefined
,我认为。我使用这个
if($(“element”)[0] || $(“element”)[0])
{
// 做点什么
}
附注:多个元素的示例
我认为“!=”比“>”性能更好,您怎么看?
if ( $(‘#myElement’).length != 0 ) {
// 它存在
}
0 表示“假”
>= 1 表示“真”
if( $(‘#selector’).length )
{
// 如果 length >= 1,则执行
}
else
{
// 如果 length = 0,则执行
}
嗨,伙计们,这种检查很棒,但我有点疯狂,想知道如何在 DOM 上下文中创建元素时触发该函数。基本上,我想在文档中出现 iframe 时停止 #something.cycle(来自 js 直播编辑器)……
Jordi,
您是否弄清楚了如何在创建元素时触发函数?我自己也遇到了这个问题,没有找到太多有用的信息。
谢谢,
-N8
这可能会有所帮助
http://stackoverflow.com/questions/14667770/how-to-call-a-javascript-function-when-iframe-finished-loading
http://stackoverflow.com/questions/6386128/how-can-i-call-a-function-after-an-element-has-been-created-in-jquery
伙计们,我使用过这个,但它不起作用
它没有被检测到
if($(‘#body’).length) bla bla
当然,如果我在 body 标签中使用 id body,它会起作用,但如果它没有 id=’body’,则此检测器根本不起作用
始终意味着您正在匹配 id。您应该使用 $(‘body’) 而不是 $(‘#body’)
这个函数是否与“live”或“bind”一起使用?
我还没有检查过,但它应该可以,因为它返回的是“this”;
live esdck
嘿,这段代码不起作用
$(‘#stop’).bind(‘click’, function(){
stopMove();
jQuery.fn.exists = function(){return this.length>0;}
需要一点帮助。我已经使用它大约 1000 次了,但这次仍然无法正确使用它
我的 if 语句如下所示
if($(‘#s’+user_id + ‘ .course_stats_user’).length > 0){
}
‘#s’+user_id + ‘ .course_stats_user’ 不存在,但它仍然进入了 if 循环……有什么想法吗?
NVM.. 现在已经解决了..
我花了很多时间摸索这个……感谢 CSS-Tricks 传播宝贵的知识!
使用 .exists() 似乎是比 .length 更合乎逻辑的选择,不是吗?
我在讨论中看到很多方法来使用 jquery 检查 div 的 ID。
我尝试了测试,所有方法都是正确的。
我使用 if( $(‘#myElement’).length) 来快速使用。
感谢您的精彩帖子。
一篇有用的帖子,特别是
exists()
函数。上面没有明确提到,但值得说明的是,exists()
方法是可以链接的。对该方法进行一个小调整/安全检查,即检查传递的第一个参数是否实际上是一个函数