从数据属性设置jQuery插件选项

时间:2014-06-26 01:47:57

标签: javascript jquery

我在使用数据属性在jQuery插件中为数组值设置选项时遇到问题。

如果我使用类选择器

引用data属性
  $('.tm-input').tagsManager(
    {
    prefilled: $('.tm-input').data('load')
    })

它可以工作,但所有元素都获得相同的值。 如果我使用“this”引用它会设置正确的值,但它会以字符串而不是数组的形式出现。

  $('.tm-input').tagsManager(
    {
    prefilled: $(this).data('load')
    })

我尝试过使用JSON.parse(),但是我收到一个关于意外字符的错误。任何帮助,将不胜感激!

1 个答案:

答案 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属性。