Jquery 使用Twitter Typeahead.js访问元素的数据属性
我使用Rails生成表单。我想使用TwitterTypeahead自动完成具有模型关联的字段 以下CoffeeScript代码:Jquery 使用Twitter Typeahead.js访问元素的数据属性,jquery,ruby-on-rails-4,coffeescript,twitter-typeahead,Jquery,Ruby On Rails 4,Coffeescript,Twitter Typeahead,我使用Rails生成表单。我想使用TwitterTypeahead自动完成具有模型关联的字段 以下CoffeeScript代码: console.log $('.typeahead').data('source') 作品及回报: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 我可以从typeahead函数中访问相同的数据吗?以下代码: $('.typeahead').typeahe
console.log $('.typeahead').data('source')
作品及回报:
["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
我可以从typeahead函数中访问相同的数据吗?以下代码:
$('.typeahead').typeahead(
name: 'test'
local: $(this).data('source')
console.log $(this).data('source'))
不起作用并返回未定义的
最简单的方法是保存对jQuery对象的引用,并使用该引用代替此:
$input = $ '.typeahead'
$input.typeahead
name: 'test'
local: $input.data 'source'
问题是,$(this).data('source')
在传递给.typeahead()
之前会进行求值。此时,此
仍设置为全局范围,没有附加任何数据
另一个选项是手动调用.typeahead
元素,而不是依赖.typeahead()
来迭代选定的元素本身,即使您有多个.typeahead
元素也可以使用:
$('.typeahead').each ->
$(this).typeahead
name: 'test'
local: $(this).data 'source'
这是因为传递给.each()
的函数是“在当前DOM元素的上下文中激发的,因此关键字This
引用元素”(请参见)。我相信这在我的页面中不适用于多个.typeahead类。现在,我使用了一种变通方法,并为我想要自动完成的每个字段复制了具有唯一id元素的js代码。我必须为整个网站做这件事,这不是很优雅,但它现在可以工作。我添加了一个替代方案,其中有多个.typeahead
元素。太棒了。这正是我想做的。你太棒了!