值得一看
双11 12
广告
广告

动态表格中实现行级独立的Ajax请求

动态表格中实现行级独立的ajax请求

本文旨在解决动态生成的HTML表格中,每个行都需要独立执行Ajax请求的问题。核心思路是利用jQuery的$(this).closest(“tr”).find(“.sub-category-dropdown”)方法,精确定位到当前行对应的子分类下拉框,从而确保每个行的Ajax请求只更新该行内的元素,避免数据混乱。

实现行级独立的Ajax请求

在动态生成的HTML表格中,如果每个行都需要根据用户的选择独立执行Ajax请求,直接使用类选择器可能会导致所有行的内容都被同时更新。为了解决这个问题,我们需要精确定位到当前行对应的元素,并只更新该行内的内容。

关键代码解析

核心在于修改JavaScript代码,使用$(this).closest(“tr”).find(“.sub-category-dropdown”)来定位到当前行对应的子分类下拉框。

  • $(this): 在.category-dropdown的change事件处理函数中,$(this)指向触发该事件的.category-dropdown元素,即当前被选中的分类下拉框。
  • .closest(“tr”): 从当前元素开始,向上查找最近的

    父元素,即当前行。

  • .find(“.sub-category-dropdown”): 在当前行内,查找类名为.sub-category-dropdown的元素,即当前行对应的子分类下拉框。
  • 修改后的JavaScript代码

    $(document).ready(function() {
    $('.category-dropdown').on('change', function() {
    var category_id = this.value;
    // 找到当前行对应的子分类下拉框
    const subSelect = $(this).closest("tr").find(".sub-category-dropdown");
    $.ajax({
    url: "fetch-subcategory-by-category.php",
    type: "POST",
    data: {
    category_id: category_id
    },
    cache: false,
    success: function(result) {
    // 只更新当前行对应的子分类下拉框
    subSelect.html(result);
    }
    });
    });
    });

    完整示例

    假设有如下HTML结构(PHP代码用于动态生成分类选项):

    <table class="center" id="Cateogry">
    <tr>
    <th>Category</th>
    <th>Item</th>
    </tr>
    <tr>
    <td>
    <div class="form-group">
    <label for="CATEGORY-DROPDOWN">Category</label>
    <select class="form-control category-dropdown">
    <option value="">Select Category</option>
    <?php
    require_once "../config.php";
    $result = mysqli_query($con,"SELECT * FROM menu_category where outlet_id = 18");
    while($row = mysqli_fetch_array($result)) {
    ?>
    <option value="<?php echo $row['category_id'];?>"><?php echo $row["category_name"];?></option>
    <?php
    }
    ?>
    </select>
    </div>
    </td>
    <td>
    <div class="form-group">
    <label for="SUBCATEGORY">Sub Category</label>
    <select class="form-control sub-category-dropdown">
    </select>
    </div>
    </td>
    </tr>
    <tr>
    <th>Category</th>
    <th>Item</th>
    </tr>
    <tr>
    <td>
    <div class="form-group">
    <label for="CATEGORY-DROPDOWN">Category</label>
    <select class="form-control category-dropdown">
    <option value="">Select Category</option>
    <?php
    require_once "../config.php";
    $result = mysqli_query($con,"SELECT * FROM menu_category where outlet_id = 18");
    while($row = mysqli_fetch_array($result)) {
    ?>
    <option value="<?php echo $row['category_id'];?>"><?php echo $row["category_name"];?></option>
    <?php
    }
    ?>
    </select>
    </div>
    </td>
    <td>
    <div class="form-group">
    <label for="SUBCATEGORY">Sub Category</label>
    <select class="form-control sub-category-dropdown">
    </select>
    </div>
    </td>
    </tr>
    </table>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
    $(document).ready(function() {
    $('.category-dropdown').on('change', function() {
    var category_id = this.value;
    // 找到当前行对应的子分类下拉框
    const subSelect = $(this).closest("tr").find(".sub-category-dropdown");
    $.ajax({
    url: "fetch-subcategory-by-category.php",
    type: "POST",
    data: {
    category_id: category_id
    },
    cache: false,
    success: function(result) {
    // 只更新当前行对应的子分类下拉框
    subSelect.html(result);
    }
    });
    });
    });
    </script>

    fetch-subcategory-by-category.php (示例):

    <?php
    require_once "../config.php"; // 假设包含数据库连接信息
    $category_id = $_POST['category_id'];
    $result = mysqli_query($con,"SELECT * FROM menu_subcategory where category_id = $category_id");
    $options = "<option value=''>Select Sub Category</option>";
    while($row = mysqli_fetch_array($result)) {
    $options .= "<option value='".$row['subcategory_id']."'>".$row["subcategory_name"]."</option>";
    }
    echo $options;
    ?>

    注意事项

    • 确保jQuery库已正确引入。
    • fetch-subcategory-by-category.php 脚本需要根据category_id返回相应的子分类选项。
    • 如果表格是动态添加行,需要确保事件绑定在动态添加的元素上也生效。可以使用事件委托,将事件绑定到静态父元素上,例如:$(document).on(‘change’, ‘.category-dropdown’, function() { … });

    总结

    通过使用$(this).closest(“tr”).find(“.sub-category-dropdown”),我们可以精确地定位到当前行对应的子分类下拉框,从而实现行级独立的Ajax请求,避免数据混乱,提升用户体验。 这种方法也适用于其他需要在动态表格中实现行级操作的场景。

温馨提示: 本文最后更新于2025-08-13 22:39:53,某些文章具有时效性,若有错误或已失效,请在下方留言或联系易赚网
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容