jquery Select-替换为不可用于Select

jquery Select-替换为不可用于Select,jquery,.net,ajax,razor,model-view-controller,Jquery,.net,Ajax,Razor,Model View Controller,环境/技术:Cshtml/Razor、ajax、jQuery、SQL Server 2008 我实现了对我的cshtml web应用程序的简单搜索,如下所示: 用于输入搜索的输入文本框 jQuery调用ajax方法请求合适的方法在SQL中进行搜索 当我收到响应时,我将其加载到现有的“select”标记上,如下所示: success: function (response) { $("select#searchres").replaceWith(response);

环境/技术:Cshtml/Razor、ajax、jQuery、SQL Server 2008

我实现了对我的cshtml web应用程序的简单搜索,如下所示:

  • 用于输入搜索的输入文本框
  • jQuery调用ajax方法请求合适的方法在SQL中进行搜索
  • 当我收到响应时,我将其加载到现有的“select”标记上,如下所示:

    success: function (response) {
    $("select#searchres").replaceWith(response);                        
    } 
    
    这意味着我用输出替换现有的select;我的典型回答如下所示:

    <select id="searchres">
    <option value=""></option>
    @foreach (var result in searchresults)
    {
        <option value="@result[0]">@result[2] @result[3] @result[4]</option>
    }
    </select>
    
    
    @foreach(搜索结果中的var结果)
    {
    @结果[2]@result[3]@result[4]
    }
    
  • 输出:结果按预期加载到select中;但是,当我选择加载到下拉列表中的值时,我的请求不会返回任何内容;好像我加载的内容不存在。此外,用于捕获所选值并执行操作的jquery方法不会被触发

  • 进一步的步骤:我查看了页面源代码,发现下拉/选择仍然显示,好像它保存了原始内容

  • 问题:如何解决此问题?如何让页面识别我的“新”标签及其内容,并对交互做出适当响应?

    如果您使用asp.net MVC

    另外,动态重写html时,必须重新绑定事件。因此,如果您在select上有click或change事件,请在附加html后重新绑定它们


    希望对您有所帮助。

    进行以下更改。覆盖
    select
    将删除所有附加的事件处理程序。使用
    .html()
    而不是
    .replaceWith()
    以保留原始
    元素及其事件处理程序

    success: function (response) {
        $("#searchres").html( response );                        
    } 
    
    删除

    
    @foreach(搜索结果中的var结果)
    {
    @结果[2]@result[3]@result[4]
    }
    
    success: function (response) {
        $("#searchres").html( response );                        
    } 
    
    <option value=""></option>
    @foreach (var result in searchresults)
    {
        <option value="@result[0]">@result[2] @result[3] @result[4]</option>
    }