当前位置: 首页 > 面试题库 >

将HTML插入带有Ajax的页面后,选择dom元素

葛胡媚
2023-03-14
问题内容

我创建了一个ajax标签导航,并将html插入页面。代码如下:

$.ajax({
        type: 'POST',
        url: 'main/ajaxjson/load_course_details',
        data: {page : which, course_id: id},
        success: function(home){

            $('#ajax-content ').hide();
            $('#ajax-content').empty().append(home);
            $('#ajax-content').fadeIn(); 
        }

    });

好的…所以我将标记附加到html中。现在,我需要从插入的html中选择dom元素,但是我不能。我有以下代码:

<a href="javascript:;" class="light-button">Next</a>
<select id="chapters-select">
    <?php foreach ($chapters as $chapter) : ?>
    <option value="<?php echo $chapter->id; ?>"><?php echo $chapter->title; ?></option>
    <?php endforeach; ?>
</select>

在这里,我动态生成选择选项。当我尝试这样做时:

$('#chapters-select').change(function(){
    alert('changed');
});

它不起作用。通过ajax附加html后,如何使用javascript?


问题答案:

使用on1.7版以上的委托事件

$('body').on('change', '#chapters-select', function(){
    alert('changed');
});

为了提高性能,body您应该编写最接近的static(未使用ajax或javascript添加动态)元素,该元素包含“chapters-select

如果您使用的是旧版本,请使用jQuery下表选择适当的方法:

$(selector).live(events, data, handler);                // jQuery 1.3+  
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+  
$(document).on(events, selector, data, handler);        // jQuery 1.7+

on docs:

提供选择器后,事件处理程序称为“委托”。当事件直接发生在绑定元素上时,不调用处理程序,而仅对与选择器匹配的后代(内部元素)进行调用。jQuery使事件从事件目标一直冒泡到附加了处理程序的元素(即,最内层元素到最外层元素),并沿该路径运行与选择器匹配的任何元素的处理程序。

事件处理程序仅绑定到当前选定的元素。在您的代码调用.on()时,它们必须存在于页面上。为确保元素存在并可以选择,请在文档就绪处理程序内对页面上HTML标记中的元素执行事件绑定。如果将新的HTML注入页面,请在将新的HTML放入页面后选择元素并附加事件处理程序。或者,使用委托事件来附加事件处理程序,如下所述。



 类似资料:
  • 问题内容: 我目前正在开发一个网站,我需要根据用户执行的操作来动态加载页面。 示例:如果用户单击“设置”按钮,则ajax函数将从外部页面加载该代码,并将其放入带有标签“设置”的div中。 这是我用来发出Ajax请求的代码: 这是第一个代码片段将ajax结果放入的位置: 该代码是从此处的函数调用的: 这是ajax函数将放入div 的html : 我想知道是否有一种方法也可以执行ajax函数返回的ja

  • 给定以下标记: 如何在。分隔符后选择类。first和。second?我尝试了以下几点: 然而,这似乎并不奏效。我以为这是这样的,从左到右: 既然它不能工作,我想我误解了其中一个选择器的功能。感谢任何帮助(或这方面的替代方案)。 PS: 标记来自外部源。虽然我可以在技术上用JS添加一个类,但如果可能的话,我更倾向于不添加。我也尝试过使用“:not”选择器,但我也没有得到它的工作。 谢谢 编辑: 在屏

  • 我有大约2,000行HTML代码可以从我的Java服务器上检索。这个HTML代码内部还有一些角度指令,如和和。当我尝试使用以下方法在客户端中显示该HTML时: 我看到所有的HTML元素都显示正确,但没有一个角指令起作用(比如某些HTML应该用隐藏,但它们没有...而且事件都不起作用。我能做什么来修复这个问题呢? 我需要这个功能,因为我将我的代码作为一个JAR文件交付给不同的用户,以便在他们的本地机

  • 我想创建一些表格与自动填充价格在输入框,但我不知道如何实现到我的代码。首先我有选择选项,然后选择选项后,输入框上的价格会自动生成,然后我输入折扣值,然后总价格会自动生成(基本价格-折扣%)。这是我的代码: null null

  • 问题内容: 好的。简而言之,我正在尝试执行INSERT SELECT,例如: 当然,@key不会从每个插入中返回每个后续的LAST_INSERT_ID(),而是仅从最后一个插入返回ID。 基本上,我将旧的USER表拆分为ENTITY和USER,例如: 我为什么要这样做?基本上,我有一个“商店”实体,它将具有“用户”公用的字段,例如地址和电话号码。因此,任何“ ENTITY”都可能没有多个地址(送货

  • 问题内容: 我希望有一个输入字段,用户可以输入自定义文本值或从下拉菜单中选择。普通只提供下拉选项。 我如何才能接受自定义值?例如:福特? 问题答案: HTML5具有内置的组合框。您创建一个文本和一个。然后,您向中添加一个属性,其值为的。 更新: 自2019年3月起,所有主要浏览器(现在包括Safari12.1和iOSSafari12.3)都支持此功能所需的级别。有关详细的浏览器支持。 看起来像这样