+ -
当前位置:首页 → 问答吧 → jquery 选择器问题求助

jquery 选择器问题求助

时间:2009-05-04

来源:互联网

$('#box1','#box2').css('display', 'block');
上面这样写与下面这样写区别在哪里?
$('#box2').css('display','block');
$('#box1').css('display','block');



------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在学习<jquery in action>(jquery 实战)中遇到问题
看不懂
$('div',$(this).parents('div:first')).css('display',checked ? 'block':'none');
这一句,请大家指教!谢谢了
复制代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3.   <head>
  4.     <title>Bamboo Asian Grille - Online Order Form</title>
  5.     <link rel="stylesheet" type="text/css" href="bamboo.css">
  6.     <script type="text/javascript"
  7.             src="../../scripts/jquery-1.2.1.js"></script>
  8.     <script type="text/javascript">
  9.       $(function(){
  10.         $('fieldset div div').hide();
  11.         $(':checkbox').click(function(){
  12.           var checked = this.checked;
  13.           $('div',$(this).parents('div:first'))
  14.             .css('display',checked ? 'block':'none');
  15.           $('input[type=text]',$(this).parents('div:first'))
  16.             .attr('disabled',!checked)
  17.             .css('color',checked ? 'black' : '#f0f0f0')
  18.             .val(1)
  19.             .change()
  20.             .each(function(){ if (checked) this.focus(); });
  21.         });
  22.         $('span[price] input[type=text]').change(function(){
  23.           $('~ span:first',this).text(
  24.             $(this).val() *
  25.             $(this).parents("span[price]:first").attr('price')
  26.           );
  27.         });
  28.         $('span[price] input[type=text]').change();
  29.       });
  30.     </script>
  31.   </head>
  32.   <body>
  33.     <h1>Bamboo Asian Grille</h1>
  34.     <h2>Online Order Menu</h2>
  35.     <fieldset>
  36.       <legend>Appetizers</legend>
  37.       <div>
  38.         <label>
  39.           <input type="checkbox" name="appetizers"
  40.                  value="imperial"/>
  41.           Fried Imperial rolls (2)
  42.         </label>
  43.         <span price="3">
  44.           <input type="text" name="imperial.quantity"
  45.                  disabled="disabled" value="1"/>
  46.           $<span></span>
  47.         </span>
  48.         <div>
  49.           <label>
  50.             <input type="radio" name="imperial.option"
  51.                    value="pork" checked="checked"/>
  52.             Pork
  53.           </label>
  54.           <label>
  55.             <input type="radio" name="imperial.option"
  56.                    value="vegetarian"/>
  57.             Vegetarian
  58.           </label>
  59.         </div>
  60.       </div>
  61.       <div>
  62.         <label>
  63.           <input type="checkbox" name="appetizers" value="spring"/>
  64.           Spring rolls (2)
  65.         </label>
  66.         <span price="4">
  67.           <input type="text" name="spring.quantity"
  68.                  disabled="disabled" value="1"/>
  69.           $<span></span>
  70.         </span>
  71.         <div>
  72.           <label>
  73.             <input type="radio" name="spring.option" value="pork"
  74.                    checked="checked"/>
  75.             Pork
  76.           </label>
  77.           <label>
  78.             <input type="radio" name="spring.option"
  79.                    value="shrimp"/>
  80.             Pork and Shrimp
  81.           </label>
  82.           <label>
  83.             <input type="radio" name="spring.option"
  84.                  value="vegetarian"/>
  85.             Vegetarian
  86.           </label>
  87.         </div>
  88.       </div>
  89.       <div>
  90.         <label>
  91.           <input type="checkbox" name="appetizers" value="vnrolls"/>
  92.           Vietnamese rolls (4)
  93.         </label>
  94.         <span price="5">
  95.           <input type="text" name="vnrolls.quantity"
  96.                  disabled="disabled" value="1"/>
  97.           $<span></span>
  98.         </span>
  99.         <div>
  100.           <label>
  101.             <input type="radio" name="vnrolls.option" value="pork"
  102.                    checked="checked"/>
  103.             Pork
  104.           </label>
  105.           <label>
  106.             <input type="radio" name="vnrolls.option"
  107.                    value="shrimp"/>
  108.             Pork and Shrimp
  109.           </label>
  110.           <input type="radio" name="vnrolls.option"
  111.                  value="vegetarian"/>
  112.           <label>Vegetarian</label>
  113.         </div>
  114.       </div>
  115.       <div>
  116.         <label>
  117.           <input type="checkbox" name="appetizers" value="rangoon"/>
  118.           Crab rangoon (8)
  119.         </label>
  120.         <span price="6">
  121.           <input type="text" name="rangoon.quantity"
  122.                  disabled="disabled" value="1"/>
  123.           $<span></span>
  124.         </span>
  125.         <div>
  126.           <label>
  127.             <input type="radio" name="rangoon.option"
  128.                    value="sweet checked="checked"/>
  129.             Sweet-and-sour sauce
  130.           </label>
  131.           <label>
  132.             <input type="radio" name="rangoon.option" value="hot"/>
  133.             Hot mustard
  134.           </label>
  135.           <label>
  136.             <input type="radio" name="rangoon.option" value="both"/>
  137.             Both
  138.           </label>
  139.         </div>
  140.       </div>
  141.       <div>
  142.         <label>
  143.           <input type="checkbox" name="appetizers"
  144.                  value="stickers"/>
  145.           Pot stickers (6)
  146.         </label>
  147.         <span price="5">
  148.           <input type="text" name="stickers.quantity"
  149.                  disabled="disabled" value="1"/>
  150.           $<span></span>
  151.         </span>
  152.         <div>
  153.           <label>
  154.             <input type="radio" name="stickers.option"
  155.                    value="pork" checked="checked"/>
  156.             Pork
  157.           </label>
  158.           <label>
  159.             <input type="radio" name="stickers.option"
  160.                    value="vegetarian"/>
  161.             Vegetarian
  162.           </label>
  163.         </div>
  164.       </div>
  165.       <div></div>
  166.     </fieldset>
  167.   </body>
  168. </html>

作者: cutstring   发布时间: 2009-05-04

$('#box1','#box2').css('display', 'block');

这个表示在#box2中寻找#box1,属于没事找事型的。除了降低执行效率没有好处。因为整个页面ID应该是唯一的。


$('div',$(this).parents('div:first')).css('display',checked ? 'block':'none');
等价于
if(checked == true){
    $('div',$(this).parents('div:first')).css('display', 'block');
}else{
    $('div',$(this).parents('div:first')).css('display', 'none');
}

作者: shawphy   发布时间: 2009-05-04

$('#box1','#box2').css('display', 'block');
就是找#box1,这个#box1必须包含在#box2,等同于
$('#box2 #box1').css('display', 'block');
即#box2里的#box1。如果没有特殊原因,一般直接这样写:$('#box1').css('display', 'block');

$('#box1, #box2').css('display', 'block'); //中间的引号去掉
等同于
$('#box2').css('display','block');
$('#box1').css('display','block');


$('div',$(this).parents('div:first')).css('display',checked ? 'block':'none');
找div,这个div必须是$(this)的父元素(即$(':checkbox')的父元素),且只取匹配到的第一个父元素。然后判断$(':checkbox')是否选定,选定就显示这个div,否则不显示。

作者: keakon   发布时间: 2009-05-05

明白了,谢谢两位解答!

作者: cutstring   发布时间: 2009-05-05

相关阅读 更多