【问题标题】:isset in jQuery? [duplicate]jQuery中的isset? [复制]
【发布时间】:2011-11-23 12:03:53
【问题描述】:

可能重复:
Finding whether the element exists in whole html page

我想做点什么:

HTML

<span id="one">one</span>
<span id="two">two</span>
<span id="three">three</span>

JavaScript

if (isset($("#one"))){
   alert('yes');
}

if (isset($("#two"))){
   alert('yes');
}

if (isset($("#three"))){
   alert('yes');
}

if (!isset($("#four"))){
   alert('no');
}

直播:

http://jsfiddle.net/8KYxe/

我该怎么做?

【问题讨论】:

  • 应该为这些跨度设置什么?
  • isset 是什么意思? span 有内容吗?它存在吗?

标签: php javascript jquery html


【解决方案1】:
function isset(element) {
    return element.length > 0;
}

http://jsfiddle.net/8KYxe/1/


或者,作为一个 jQuery 扩展:

$.fn.exists = function() { return this.length > 0; };

// later ...
if ( $("#id").exists() ) {
  // do something
}

【讨论】:

  • @Tomalak - 感谢您的编辑 :)
【解决方案2】:

你可以简单地使用这个:

if ($("#one")){
   alert('yes');
}

if ($("#two")){
   alert('yes');
}

if ($("#three")){
   alert('yes');
}

if ($("#four")){
   alert('no');
}

对不起,我的错误,它不起作用。

【讨论】:

  • $()always 返回一个 jQuery 对象,其计算结果为 true
  • 不行,jQuery 总是返回 jQuery 对象。
  • @FelixKling:你最好复制这条评论...也许会有第三个人这样回答... ;)
  • 这行不通,因为 jQuery 将返回对象,它总是评估为真,只是集合是空的(长度为 0)。
  • 为什么会这样?因为$("#four") 返回一个评估为真的对象。将no 更改为yes,它会提醒yes。你得出了错误的结论。您使用 same 条件来测试#three 是否存在。这背后的逻辑是什么?语句里面是什么并不重要,重要的是条件是什么。见jsfiddle.net/eqpqR/1
【解决方案3】:

你可以使用length:

if($("#one").length) { // 0 == false; >0 == true
    alert('yes');
}

【讨论】:

  • 不需要 > 0 在那里,因为 0 被评估为假。
  • @Richard:没错,但&gt; 0 更具表现力,因此更易于阅读。 0 的计算结果可能不是false
  • @Janis - val 仅在它们是具有value 属性的元素时才有效(例如input)。它不能用于检查元素是否有内容。
  • @JanisVeinbergs:OP 显然使用了SPAN 元素。所以没有提供任何价值。即使问题非常模糊,他们也很可能正在寻找现有元素。
  • @Tomalak: if 条件最终总是被评估为布尔值,即使你提供了数字、字符串或其他任何东西。
【解决方案4】:
if (($("#one").length > 0)){
   alert('yes');
}

if (($("#two").length > 0)){
   alert('yes');
}

if (($("#three").length > 0)){
   alert('yes');
}

if (($("#four")).length == 0){
   alert('no');
}

这就是你需要的:)

【讨论】:

  • 如果没有找到id会抛出错误
  • if (!! $('#one')) { alert('yes'); } - 等等。这是!! JS 中的双非运算符。
【解决方案5】:

php.js (http://www.phpjs.org/) 有一个isset() 函数:http://phpjs.org/functions/isset:454

【讨论】:

    【解决方案6】:
    function el(id) {
      return document.getElementById(id);
    }
    
    if (el('one') || el('two') || el('three')) { 
      alert('yes');
    
    } else if (el('four')) {
      alert('no');
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 2011-05-13
      • 2013-05-11
      • 2018-10-28
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 2011-03-13
      • 2012-01-09
      相关资源
      最近更新 更多