【问题标题】:How to make a data- filter attribute value variable?如何使数据过滤器属性值变量?
【发布时间】:2020-06-07 18:37:25
【问题描述】:

我想将 li 类中的数据过滤器值设为变量以获得更多过滤器选项

    <button class="secondbtn btn btn-sucess  btn-lg dropdown-toggle type=" button" onmousedown="this.size=5;"
        onfocusout="this.size=1;" data-toggle="dropdown"  onclick="yclick()">Select Cat</button>
        <div class=" dropdown-menu edit2" id="dropdownItem" aria-labelledby="dropdownMenuButton">           
            <li class=" dropdown-item box filterListItem item btn " data-filter="Y">Y</li>
            <li class=" dropdown-item box filterListItem item btn " data-filter="C">C</li>  
        </div>



function yclick() {

    $('li.boxY:eq(0)').data('filter', 'malY');
    $('li.boxC:eq(1)').data('filter', 'malC');
    var value = $('li.boxY:eq(0)').data('filter');
    alert(value);
}

【问题讨论】:

  • 能否请您多解释一下您想要什么以及您尝试过什么,因为老实说我不知道​​您想要什么。
  • 我想将 li 中的数据过滤器值设为变量,以便我可以通过函数随时间更改其值
  • 您只想从代码中设置data-filter 值,对吗?
  • 是的,我已经通过这个问题的给定答案进行了更改,但问题仍然存在,通过函数更改值后,对于即将到来的任务,它仍然保持不变,需要对其进行更改以进一步执行

标签: jquery variables filter


【解决方案1】:

要访问或更改元素上的data-* 值,您可以使用data 方法。仅使用不带前缀的属性名称来读取值,或传递第二个参数来设置值。所以在你的情况下是这样的:

 var value = $('li.dropdown-item:eq(0)').data('filter');

会阅读第一项并且

$('li.dropdown-item:eq(0)').data('filter','foo');

将第一项设置为值“foo”。下面的演示将在单击时读取 li 的值,单击按钮将更改它们。尝试单击这两个项目,然后单击按钮并再次单击这两个项目。

$('ul').on('click','li',function(){
   console.log($(this).data('filter'));
});

$('button').on('click', function(){
    $('ul li:eq(0)').data('filter',"One");
    $('ul li:eq(1)').data('filter',"Two");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li data-filter="A">A</li>
  <li data-filter="B">B</li>
 </ul>
 
 <button>change filters</button>

【讨论】:

  • 但 index.html 中 data-filter 的值保持不变,不会更改为 foo
  • 之后的代码需要更改数据过滤器,但它保持不变
猜你喜欢
  • 2012-01-13
  • 2015-10-13
  • 1970-01-01
  • 2016-09-25
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多