Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从jquery访问ASP.NET下拉框_Asp.net_Jquery - Fatal编程技术网

如何从jquery访问ASP.NET下拉框

如何从jquery访问ASP.NET下拉框,asp.net,jquery,Asp.net,Jquery,我有个小问题。如何从jquery访问ASP.NET下拉列表?我试图使用下拉列表的“CssClass”属性来分配CSS类,然后使用该类访问该列表,但后来我发现该类在选择元素时会发生更改,因此我的初始类被一个新类替换。我将该列表的“CssClass”属性设置为“InstrumentDropDown”。当页面第一次加载时,它的class属性被设置为“InstrumentDropDown”,正如我所期望的那样。但当选择一个元素并进行回发时,它会变成类似“InstrumentDropDown sg sel

我有个小问题。如何从jquery访问ASP.NET下拉列表?我试图使用下拉列表的“CssClass”属性来分配CSS类,然后使用该类访问该列表,但后来我发现该类在选择元素时会发生更改,因此我的初始类被一个新类替换。我将该列表的“CssClass”属性设置为“InstrumentDropDown”。当页面第一次加载时,它的class属性被设置为“InstrumentDropDown”,正如我所期望的那样。但当选择一个元素并进行回发时,它会变成类似“InstrumentDropDown sg selected”(单词之间可能有下划线而不是空格)

我也不能使用“ClientID”属性,因为访问该列表的代码部分不在页面内,而是在一个单独的javascript文件中


那么我如何访问它呢?

我能想到的最简单的方法是将下拉列表用另一个id封装在一个元素中。这样,您就可以像这样引用它,而不用担心ASP.NET ClientID

脚本:

$('#dropDown select');
标记:

<div id="dropDown">
    <asp:DropDownList ID="DropDownList1" runat="server">
    </asp:DropDownList>
</div>

我能想到的最简单的事情就是用另一个id将下拉列表包装在一个元素中。这样,您就可以像这样引用它,而不用担心ASP.NET客户端id

脚本:

$('#dropDown select');
标记:

<div id="dropDown">
    <asp:DropDownList ID="DropDownList1" runat="server">
    </asp:DropDownList>
</div>

加载页面时,使用类查找下拉框并将元素的id存储在变量中

 $(function() {
      var $ddl = $('select.myClass'); // get here

      $('.somethingelse').click( function() {
            $.get('...',function(data) {
                $ddl.html(data);  // use here
            }
      }
 });

当页面加载时,使用该类查找下拉框并将元素的id存储在变量中

 $(function() {
      var $ddl = $('select.myClass'); // get here

      $('.somethingelse').click( function() {
            $.get('...',function(data) {
                $ddl.html(data);  // use here
            }
      }
 });

如果页面上只有一个下拉列表,并且您确信这一点,您也可以使用ID找到它,如下所示:

$("[id$=dropDownID]")

例如,这将查找:

如果页面上只有一个下拉列表,并且您确信这一点,您也可以使用ID查找它,如下所示:

$("[id$=dropDownID]")

例如,这将发现:

CssClass
名称更改的情况下,
OnPostback
此选择器将工作

$(document).ready(function(){ 

   $('select.InstrumentDropDown_sg_selected, select.InstrumentDropDown').change(function(){
      var yourValue = $(this).val(); //retrieve value
      $(this).val('someValue'); //set value
   });

});

如果
CssClass
名称更改
OnPostback
此选择器将工作

$(document).ready(function(){ 

   $('select.InstrumentDropDown_sg_selected, select.InstrumentDropDown').change(function(){
      var yourValue = $(this).val(); //retrieve value
      $(this).val('someValue'); //set value
   });

});

如果我这样做,那么当第二次触发“click”事件时,“$ddl”是否会包含该类值?如果是这样,为什么?它不是一个局部变量,当函数执行完成时会被销毁吗?$ddl在click处理程序中被捕获。每当执行click处理程序时,它都会使用最初分配给$ddl的值。如果这样做,那么当第二次触发“click”事件时,“$ddl”是否会包含该类值?如果是这样,为什么?它不是一个局部变量,当函数执行完成时会被销毁吗?$ddl在click处理程序中被捕获。每当执行click处理程序时,它都会使用最初分配给$ddl.Yup的值,这肯定会起作用。我也想到了这一点,但我想知道是否还有其他方法,而不必使用额外的“div”来访问列表。我还想知道一般做法。如果您不使用MVC,那么由于命名容器的原因,id选择器将无法工作。在处理Web表单时,应该使用类名而不是id。或者,您可以使用@Nick Craver在下面使用的id选择语法。@xandercoded--注意div不是
runat=server
,因此名称没有损坏。这将在Web表单中起作用,div标记id将保持不变,因为它是纯html(而不是runat=“server”)。是的,这肯定会起作用。我也想到了这一点,但我想知道是否还有其他方法,而不必使用额外的“div”来访问列表。我还想知道一般做法。如果您不使用MVC,那么由于命名容器的原因,id选择器将无法工作。在处理Web表单时,应该使用类名而不是id。或者,您可以使用@Nick Craver在下面使用的id选择语法。@xandercoded--注意div不是
runat=server
,因此名称没有损坏。这将在Web表单中工作,div标记id将保持不变,因为它是纯html(而不是runat=“server”)。不,这不是页面中唯一的下拉列表。@Sayem-有多个具有相同ID的?e、 g.在各种用户控件中?不,它不是页面中唯一的下拉列表。@Sayem-有多个具有相同ID的控件?e、 在各种用户控件中?检查asp:dropdownlist是如何呈现的。我的意思是只要看看htmlcheck asp:dropdownlist是如何呈现的。我的意思是看一下html