我在使用数据属性为 jQuery 插件中的数组值设置选项时遇到问题。
如果我使用类选择器引用数据属性
$('.tm-input').tagsManager(
{
prefilled: $('.tm-input').data('load')
})
Run Code Online (Sandbox Code Playgroud)
它有效,但所有元素都获得相同的值。如果我使用“this”引用它会设置正确的值,但它会作为字符串而不是数组出现。
$('.tm-input').tagsManager(
{
prefilled: $(this).data('load')
})
Run Code Online (Sandbox Code Playgroud)
我试过使用 JSON.parse() 但我收到一个关于意外字符的错误。任何帮助,将不胜感激!
你试过每个
$('.tm-input').each (function () {
$(this).tagsManager( { prefilled: $(this).data('load') });
});
Run Code Online (Sandbox Code Playgroud)
解释:
When a selector has more than 1 element, applying a method to it will typically affect all of the elements, but retrieving a property will typically only return that property from the 1st element.
因此,当您.tagsManager在 $('.tm-input') 选择器上使用时,您将应用.tagsManger到所有元素。但是当您设置时prefilled:$('.tm-input').data('load'), data 方法每次只从列表中的第一个元素中获取数据。
当您使用 时each,它会将each块内部的逻辑单独应用于每个元素,而不是一次应用到所有元素,因此当您使用 时$(this).data('load'),它还会从每个单独的元素中获取 load 属性。