jQuery事件委托场景下如何动态选择size_select元素更新内容
jQuery 动态关联联动下拉框实现方案
可以通过动态方式定位要更新的.size_select元素,核心是提前存储触发事件的颜色选框实例,避免全局选择器命中页面所有同类型元素的问题。
实现注意事项
jQuery ajax的success回调中默认this指向ajax请求配置对象,而非触发change事件的.color_select元素,因此需要在回调外先存储当前触发事件的元素实例。
常用实现代码
$(document).on('change', '.color_select', function() { // 存储当前触发事件的颜色选框实例 const $currentColorSelect = $(this); const id = $currentColorSelect.val(); $.ajax({ type:'POST', url: "functions/getSize.php", data: {'id': id}, success:function(data){ // 场景1:.size_select是当前颜色选框的直接同级兄弟元素 $currentColorSelect.siblings('.size_select').html(data); // 场景2:两个选框属于同一个父容器(比如class为item_group的div),非直接兄弟 // $currentColorSelect.closest('.item_group').find('.size_select').html(data); // 场景3:通过自定义属性关联,比如.color_select加了data-target="#size_1"属性指定对应尺寸选框 // const targetSelector = $currentColorSelect.data('target'); // $(targetSelector).html(data); } }); });
场景说明
- 直接兄弟元素场景适合DOM结构简单、两个选框平级放置的布局
- 父容器查找场景适合多组联动的列表类布局,比如商品列表中每个商品都有独立的颜色、尺寸选框
- 自定义属性关联场景灵活性最高,不受DOM层级限制,适合结构复杂的页面使用
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

