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

Ste*_*eO7 2 javascript jquery

我在使用数据属性为 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() 但我收到一个关于意外字符的错误。任何帮助,将不胜感激!

chi*_*NUT 5

你试过每个

$('.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 属性。