我想在点击li元素后动态更改ul元素的id。然后我将此id作为字符串传递给str变量。例如,当我点击驱动程序2的ul更改为"?driver_id = 2",
我有这样的事情:
<ul class="drivers" id="">
<li><a href="" id="?driver_id=1">Driver 1</a></li>
<li><a href="" id="?driver_id=2">Driver 2</a></li>
<li><a href="" id="?driver_id=3">Driver 3</a></li>
</ul>
和jquery:
var str=$('ul.drivers').attr('id');
答案 0 :(得分:1)
正如一些评论所提到的,这不是一个好主意。 id
属性应该是唯一的,因此通过将ul
的ID设置为其中一个li
的ID,您将在页面上创建两个ID,这将掩盖其中一个,如果你再次尝试搜索它。
但如果您尝试使用jquery更改属性,请使用attr
的第二个参数来设置attrib
$('ul.drivers').attr('id', value)
如果您想使用class而不是id,请使用jquerys addClass
方法。
$('ul.drivers').addClass(value)
虽然我建议使用自定义数据属性
$('ul.drivers').data('some-name', value) //=> set value
$('ul.drivers').data('some-name') //=> get value
答案 1 :(得分:1)
使用id
属性并不是一个好主意,因为它们必须是唯一的,并且不应该在整个DOM中进行更改。
相反,data
属性似乎更好用。您可以设置属性,并使用以下内容访问其值:
HTML
<ul class="drivers" id="list">
<li><a href="#" data-driver="?driver_id=1">Driver 1</a></li>
<li><a href="#" data-driver="?driver_id=2">Driver 2</a></li>
<li><a href="#" data-driver="?driver_id=3">Driver 3</a></li>
</ul>
JavaScript
$(document).ready(function() {
$('#list li a').on('click',function() {
var str = $(this).data('driver');
console.log(str);
})
})
这是一个JS小提琴示例:https://jsfiddle.net/igor_9000/wh3v1wsk/
希望有所帮助!
答案 2 :(得分:0)
不是更改id,而是创建一个数据属性,如下所示:
<ul class="drivers" id="driverlist-1" data-active-driver-id="">
<li><a href="" id="?driver_id=1">Driver 1</a></li>
<li><a href="" id="?driver_id=2">Driver 2</a></li>
<li><a href="" id="?driver_id=3">Driver 3</a></li>
</ul>
<ul class="drivers" id="driverlist-2" data-active-driver-id="">
<li><a href="" id="?driver_id=4>Driver 4</a></li>
<li><a href="" id="?driver_id=5">Driver 5</a></li>
<li><a href="" id="?driver_id=6">Driver 6</a></li>
</ul>
数据属性旨在存储您出于任何原因需要控制的数据。请参阅this link。
然后你这样更改它,用你的id访问你的ul,因为想想,如果你有两个uls,每个都有自己的驱动程序,你保证正确的那个将是改变:
$('#driverlist-1').data('active-driver-id', value); // setting some value to it
var str = $('#driverlist-1').data('active-driver-id'); // getting stored value
其中value
是所点击的li
的ID。即使你没有两个名单,我也建议你这样做,只是为了保持良好的做法。