You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Dropdown.js插件,li变化时如何获取其属性值?

如何在Dropdown.js插件的
  • 元素变化时获取其属性值
  • 嘿,我来帮你搞定这个问题!你用的是基于jQuery的Dropdown.js可搜索多选下拉插件,现在需要在<ul>里的<li>发生变化(比如选中、新增、移除)时获取它们的data-value属性值对吧?下面给你几种实用的解决方案:

    方法1:利用插件自带的change事件(首推)

    这类UI插件一般都会内置事件来监听选项变化,Dropdown.js也不例外。你可以在初始化插件时直接绑定onChange回调,或者后续单独监听change事件,轻松拿到选中项的属性:

    // 初始化插件时绑定回调函数
    $('.demo').dropdown({
      multipleMode: 'label',
      onChange: function(selectedItems) {
        // selectedItems是选中的<li>元素集合
        selectedItems.each(function() {
          const itemValue = $(this).data('value'); // 获取data-value属性
          const itemText = $(this).text(); // 获取选项显示文本
          console.log(`选中项:value=${itemValue},文本=${itemText}`);
        });
      }
    });
    
    // 或者单独绑定change事件(适合后续追加监听)
    $('.demo').on('change', function() {
      const selectedItems = $(this).dropdown('getSelectedItems');
      selectedItems.each(function() {
        console.log('选中项的data-value:', $(this).data('value'));
      });
    });
    

    方法2:直接监听
  • 的交互事件
  • 如果插件内置事件满足不了你的需求,你可以通过事件委托给动态生成的<li>绑定点击或选中事件(因为这些<li>是插件渲染出来的,直接绑定会失效):

    // 监听<li>的点击事件
    $(document).on('click', '.dropdown-option', function() {
      const currentValue = $(this).data('value');
      console.log('点击的选项value:', currentValue);
    
      // 可以判断该选项是否被选中(插件通常会给选中项加类似dropdown-option-selected的类)
      if ($(this).hasClass('dropdown-option-selected')) {
        console.log('这个选项已被选中,value是:', currentValue);
      }
    });
    

    方法3:监听DOM变化(处理动态更新场景)

    如果你的选项是异步加载或者动态修改的,用MutationObserver来监听<ul>的子元素变化,不管选项是新增、删除还是修改,都能触发回调获取属性:

    // 获取目标<ul>元素
    const targetUl = $('.dropdown-main ul')[0];
    
    // 创建MutationObserver实例
    const observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        // 当<ul>的子元素发生变化时,遍历所有<li>
        if (mutation.type === 'childList') {
          $('.dropdown-option').each(function() {
            const itemValue = $(this).data('value');
            console.log('选项的data-value:', itemValue);
          });
        }
      });
    });
    
    // 配置观察规则:监听子元素变化,包括子树
    const observerConfig = { childList: true, subtree: true };
    
    // 启动观察
    observer.observe(targetUl, observerConfig);
    
    // 不需要观察时可以停止
    // observer.disconnect();
    

    小提示

    • 优先用方法1,这是插件官方提供的方式,兼容性和稳定性最好;
    • 方法2适合快速监听单个选项的交互行为;
    • 方法3适合处理选项动态更新的复杂场景。

    内容的提问来源于stack exchange,提问作者Muhammad Umair

    相关产品推荐
    方舟 Agent Plan

    超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

    最近更新时间:2026.05.12 03:54:40