我在使用数据属性在jQuery插件中为数组值设置选项时遇到问题。
如果我使用类选择器
引用data属性 $('.tm-input').tagsManager(
{
prefilled: $('.tm-input').data('load')
})
它可以工作,但所有元素都获得相同的值。 如果我使用“this”引用它会设置正确的值,但它会以字符串而不是数组的形式出现。
$('.tm-input').tagsManager(
{
prefilled: $(this).data('load')
})
我尝试过使用JSON.parse(),但是我收到一个关于意外字符的错误。任何帮助,将不胜感激!
答案 0 :(得分:2)
你有没有尝试过每个
$('.tm-input').each (function () {
$(this).tagsManager( { prefilled: $(this).data('load') });
});
说明:
当一个选择器有多个元素时,对它应用一个方法通常会影响所有元素,但是检索一个属性通常只会从第一个元素返回该属性。
因此,当您在$('。tm-input')选择器上使用.tagsManager
时,您将.tagsManger
应用于所有元素。但是当你设置prefilled:$('.tm-input').data('load')
时,数据方法只是每次都从列表中的第一个元素中获取数据。
当您使用each
时,它会将each
块内部的逻辑单独应用于每个元素,而不是同时应用所有元素,因此当您使用$(this).data('load')
时,它会抓取每个元素的load属性。