浏览:6162008-01-27 21:00   来自猫冬      :
<body>
  <div>A div</div>
  <div class="divdisplay">Another</div>
</body>
 

<script>
  $(document).ready(function(){
 $divs = $("div");
    var selected = $divs && $divs.filter(".divdisplay").removeClass("divdisplay");
  });

 

问:selected是个什么虾米?为什么?

楼主
  7个月前   猫冬      :
是不是
Perl支持的逻辑运算符:
$r=$x||$y$r=$x或$y。
$r=$x&&$y$r=$x与$y。
$r=!$x$r=非$x。
1楼 回到顶楼 
  7个月前   猫冬      :
,返回[object Object]
,返回1
,返回1
2楼 回到顶楼 
  7个月前   侯垒      :
没有见过这样写的Javascrip
3楼 回到顶楼 
  7个月前   Justin      :
var selected

不太熟悉script,但是从写法上看,这只是个变量而已,是否写成selected应该没有什么区别,楼主可实验一下吧
4楼 回到顶楼 
  7个月前   !天山寒雪      :

都在 搞 这么些 无聊的东西,
我都搞了 3个月了, 还是 不能 达到 google 的水平
5楼 回到顶楼 
  7个月前   亚历山大同志      :
用jQuery的吧,很好理解:
$divs = $("div");
divs就是所有层的list
$divs && $divs.filter(".divdisplay").removeClass("divdisplay");
是将这个集合和筛选和删除操作后的列表作“与”运算后的结果
结果还是一个列表

关于函数fliter和remove我没有具体查jQuery的文档。其实jQuery还是很好懂的
6楼 回到顶楼 
  7个月前   猫冬      :
@亚历山大同志
但是我的思维告诉我,&&是逻辑运算符,就是表示返回布尔类型,怎么是返回object类型?
7楼 回到顶楼 
  7个月前   猫冬      :
var selected = $divs && $divs.filter(".divdisplay").removeClass("divdisplay");
是不是相当于:
if($divs && $divs.length)
{
selected = $divs.filter(".divdisplay").removeClass("divdisplay");
}
8楼 回到顶楼 
  7个月前   阿滨       :
selected 就是个变量.
filter是个过滤器而已.
你怎么不看看jquery的api啊...
9楼 回到顶楼 
  7个月前   猫冬      :
@阿滨
有看清楚我问什么吗?
我的思维告诉我,&&是逻辑运算符,就是表示返回布尔类型,怎么是返回object类型?
10楼 回到顶楼 
  7个月前   暗香浮动      :
@猫冬
&&是逻辑运算符
是不是前后两个集合中都存在的对象的列表。
两个集合进行逻辑操作可能跟你的思维也不符合吧。
11楼 回到顶楼 
  7个月前   猫冬      :
@暗香浮动
两个集合进行逻辑且的操作,应该返回true或false,怎么返回[object object]
能解释的更清楚点吗?
12楼 回到顶楼 
  7个月前   Wilensky      :
首先js中的变量是弱类型的。初始类型取决于赋的初始值。而且在使用过程中可以改变类型,就是说可以赋不同类型的值。&& 在js中是逻辑and运算符,他的运算数可以是任何类型的。不止是 bool型。
如果一个运算符是对象,另一个是boolean值,则返回该对象
如果两个运算数都是对象,则返回第二个对象
如果某个运算数是null,则返回null
如果某个运算数是NaN,则返回Nan
如果某个运算数是undefined,则发生错误
====参考资料 javascript 高级程序设计===
你的思维误导了你
13楼 回到顶楼 
  7个月前   暗香浮动      :
@Wilensky
14楼 回到顶楼 
  7个月前   猫冬      :
@Wilensky
如果两个运算数都是对象,则返回第二个对象——第二个的代码必定回执行吗?
比如会不会出现,第一个执行了,第二个不执行
15楼 回到顶楼 
  7个月前   Wilensky      :
@猫冬:javascript 由 ECMAScript DOM BOM 三部分组成,ECMAScript中&&运算符是简便运算,如果第一个运算数决定了结果,就不再计算第二个运算数,也就是说如果第一个是 false,那无论第二个是什么,结果都不可能是 true
而如果运算数是对象,则不这样处理了。看这个例子:

var a="000"; var b=11100;
var c=a&&b;
;
运行这个我们得到的是 11100.
两个都是对象,第一个不能决定结果,则看第二个,返回了第二个。它是这么规定的,具体原因我也不清楚。
如果是这样:

var a=false; var b=11100;
var c=a&&b;
;这个返回false
这样:

var a=true; var b=11100;
var c=a&&b;
;
则返回 11100
你说的那种情况不会那样处理,第一个是对象,回返回第二个对象,问为什么的话,人家就是这样规定的,呵呵。
16楼 回到顶楼 
  7个月前   猫冬      :
@Wilensky
两个对象,如果第一个是null,估计第二个就不会执行了
比如
var obj,
name;
if(判断) obj = document.getElmentById("xx")
name = obj && obj.name;

如果[判断]没有通过,那么obj为null
就相当于起到if(obj) name = obj.id的作用!只是那么写简单
17楼 回到顶楼 
  7个月前   猫冬      :
@Wilensky
两个对象,如果第一个是null,估计第二个就不会执行了
比如
var obj,
name;
if(判断) obj = document.getElmentById("xx")
name = obj && obj.name;

如果[判断]没有通过,那么obj为null
就相当于起到if(obj) name = obj.name的作用!只是那么写简单
18楼 回到顶楼 
  7个月前   Wilensky      :
Null是特殊的类型,它的专用值是null,运算时可以被类型转换为false,自然返回null了,我看书上解释说null可以被认为对象的占位符,我也不太理解这个。
19楼 回到顶楼 
  7个月前   Klesh Wong      :
这个与||操作符相对应
也是一个短路操作符,正如你最后说的那样
只有前面的条件成立,后面的表达式才会被执行
式子会从左向右运算,遇到false(包括0,null,undefined)就中止并返回,否则就返回最后一个表达式的结果。
总的来说,selected要么是false(包括0,null,undefined),要么就是最后一个表达式的值。
20楼 回到顶楼 
  7个月前   沙加      :
js这种弱类型的东西有时候是很灵活但是用习惯了C#经常会看得一头雾水~~莫名其妙~~
21楼 回到顶楼 

注册用户登录后才能回复,登录注册
> 返回“jQuery”


其他话题

相关链接
1 20587