JQuery实现下拉框的选择 与当CheckBox为服务器控件时如何获取值的操作,实现全选与删除

<script type="text/javascript" defer="defer">
       //选择DropDownList中的值并保存在隐藏域中

 //选择接等员
function SelectReceptionist()
{
   if ($("#<%=ddlSelectReceptionist.ClientID %>").val() != "")
    {
        $("#<%=hfReceptionist.ClientID %>").val($("#<%= ddlSelectReceptionist.ClientID %>").val());
    }
}

 

//全选
$(function()
{
    $("#chkAll").bind("click", function()
    {
        if ($("#chkAll").attr("checked") == true)
        {
            $("input[name$='chkClass']").each(function() //("input[name='chkClass']")
            {
                $(this).attr("checked", true);
            });
        }
        else
        {
            $("input[name$='chkClass']").each(function()//input[name='chkClass']
            {
                $(this).attr("checked", false);
            });
        }
    });
});

 

 

//保存要安排接待员的班级ID
    function ArrangeReceptionist()
    {
        var texts = "";
        //$(":checkbox").each
        //$("input[name='chkClass']")
        $("input[name$='chkClass']").each(function()
        {
            if ($(this).attr("checked") == true)
            {
                //texts += $("span[name='chkClass']").attr("title") + ";";

      texts += $(this).parent().attr("title") + ";"; //解决CheckBox为服务器控件的问题,得到父对象的title属性,在下面解释

            }
        });

        if (texts != "")
        {
            if (confirm("确定要给这些班级安排接待员吗?") == true)
            {
                var tempClass = texts.substring(0, texts.length - 1);
                $("#<%= hfSelectedClass.ClientID %>").val(tempClass);
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            alert("请选择要安排的班级");
            return false;
        }
    }


</script>

 <table>

  <tr class="dataTable2Row">
           <td class="dataTable2Text">选择接待员:</td>
           <td >
             <asp:DropDownList runat="server" ID="ddlSelectReceptionist" CssClass="select2" Width="120px" onchange="SelectReceptionist()" >
       
            </asp:DropDownList>
            <asp:HiddenField ID="hfReceptionist" runat="server" />   
          </td>

      </tr>

      <tr>
   <td  valign="top">
    <asp:GridView ID="gvClassInfoList" runat="server" Width="100%" AutoGenerateColumns="False" DataKeyNames="ClassID" CssClass="Grid"  >
        <Columns>
            <asp:TemplateField HeaderText="全选">
                <HeaderTemplate>
                    <input ID="chkAll" type="checkbox" name="chkAll"  value="全选" />
                </HeaderTemplate>
                <ItemTemplate>
                  <asp:CheckBox ID="chkClass" name="chkClass" title='<%# Eval("ClassID") %>' runat="server"  /> //CheckBox为服务器控件       
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="班级ID" Visible="False">
                <ItemTemplate>
                    <asp:Label ID="lblClassId" runat="server" Text='<%# Eval("ClassID") %>' Visible="false" ></asp:Label>
                </ItemTemplate>                       
            </asp:TemplateField>
            <asp:BoundField DataField="CLASSNO" HeaderText="班级代码" SortExpression="IS_REPLY">
                <HeaderStyle Wrap="False" />
            </asp:BoundField>
            <asp:BoundField DataField="FROMNO" HeaderText="延续自" ></asp:BoundField>                   
            <asp:BoundField DataField="ATTENDNO" HeaderText="延续至" ></asp:BoundField>
            <asp:BoundField DataField="WITHNO" HeaderText="合班" ></asp:BoundField>
            <asp:BoundField DataField="Receptionist" HeaderText="接待员"  ></asp:BoundField>                   
            <asp:BoundField DataField="PROGRAMNAME" HeaderText="培训项目" />
            <asp:BoundField DataField="ItemName" HeaderText="类别 " ></asp:BoundField>
            <asp:BoundField DataField="TRAINEENO" HeaderText="总人数" ></asp:BoundField>
            <asp:BoundField DataField="STARTDATE" HeaderText="理论开始时间" HtmlEncode=false DataFormatString="{0:yyyy-MM-dd}"></asp:BoundField>
            <asp:BoundField DataField="ENDDATE" HeaderText="理论结束时间" HtmlEncode=false DataFormatString="{0:yyyy-MM-dd}"></asp:BoundField>
            <asp:BoundField DataField="DAYS" HeaderText="时长" ></asp:BoundField>                                      
            <asp:BoundField DataField="WITHNO" HeaderText="合班" ></asp:BoundField>
            <asp:TemplateField HeaderText="团组资料">
                <ItemTemplate>
                    <div>                               
                        <asp:Label ID="lblOrgName" runat="server" Text='<%#Eval("OrgNameAndTraineeNo") %>'></asp:Label>
                    </div>
                </ItemTemplate>
           </asp:TemplateField>
           <asp:BoundField DataField="Remark" HeaderText="备注" ></asp:BoundField>                                   
        </Columns>
    </asp:GridView>
 </td>          
</tr>     

</table>

 

//备注:

texts += $(this).parent().attr("title") + ";";

//解决CheckBox为服务器控件的问题,通过取得当前CheckBox对象的父对象的title属性来取得保存在其中的ID值,因为服务器CheckBox不支持value属性

在页面每一个CheckBox被解析为,在外面包了一个<span></span>作为它的父对象

<span name="chkClass" title="fde867e6-6f95-47cf-aab8-8f25c4695e37">
         <input id="ctl00_SmartComContentPlace_gvClassInfoList_ctl02_chkClass" type="checkbox"  name="ctl00$SmartComContentPlace$gvClassInfoList$ctl02$chkClass" />
</span>

 

另外JQuery有用的几个方法有如下:

1、children

这个函数得到一组元素的直接子级。

如: $('.rating').children('.on')

 

2、filter

这个函数通过传递的选择表达式从一个集合中过滤元素。任何不匹配这个表达式的元素将从选择的集合中移除

如::$('.star').filter('.on')

 

3、not

与filter恰恰相 反,not()从集合中移除匹配的元素。

$('.star').not(':even')

 

4、add

如果我们想在集合中增加一些元素怎么办?add()函 数正是做这件事的。

$('.star').add('.photo')

 

 

 

6、parent

parent()函数选取一系列元素的直接父级。

$('.start:first').parent()

 

7、parents

这是复数形式,parents()选 择集合的所有祖先元素。我的意思是所有祖先元素包括直接父级到“body”和“html”元素。所以最好通过传递表达式缩小选择结果。

通过给parents()传 递.container参数,div.container将被选中,它实际上第一个star的祖父。

$('.star).parents('.container')

 

8、siblings

这个函数选择一组元素的所有兄弟姐妹,传递一个表达式可以筛选结果。

 

9、prev & prevAll

prev()函数选择前一个兄弟节点。prevAll()选择一个元素集合前面所有的兄弟节点。

$('.rating:nth-child(3)').prevAll()//第三个节点前的兄弟节点被选中

 

10、next & nextAll

这些函数与prev和prevAll工作方式相同,不过它选择的是下一个兄弟姐妹。

$('.rating:nth-child(3)').nextAll()//第三个节点后的兄弟节点被选中

 

$('.star').click(function(){

         $(this).addClass('on');

//       如何取得当前对象的 父级?

         $(this).parent().addClass('rated');

//       如何获得当前对象左 侧的star?

         $(this).prevAll().addClass('on');

         $(this).nextAll().removeClass('on');

});

 

以上10个函数链接:http://www.chinaz.com/Program/XML/033011015R010.html

另外如下:

〈body〉
〈div id=“one“〉
〈div id=“two“〉hello〈/div〉
〈div id=“three“〉
   〈p〉〈a href=“#“〉tonsh〈/a〉〈/p〉
〈/div〉
〈/div〉

$(”a”).parent()将会得到父对象〈p〉
$(”a”).parents()得到父对象为〈p〉〈div.3〉〈div.1〉
$(”a”).parents().filter(”div”)将得到〈div.3〉〈div.1〉,还可以写成$(”a”).parents(”div”)。

如果想的到〈div.2〉对象可以写成这样:$(”a”).parents(”div:eq(0)”)。

如果需要点击〈a〉链接时弹出〈div.2〉中的内容,就这么办:

var id=$(“a“).parents(“div:eq(1)“).children(“div:eq(0)“).html();
alert(id);

posted @ 2012-03-26 21:31  欢喜王子  阅读(322)  评论(0编辑  收藏  举报