Javascript 添加数据属性以选择.js选项
我正在为我的项目使用selectize.js。但是我在数据属性方面有问题。我想向选择选项添加数据属性。 我有如下默认选择:Javascript 添加数据属性以选择.js选项,javascript,html,ruby-on-rails,selectize.js,Javascript,Html,Ruby On Rails,Selectize.js,我正在为我的项目使用selectize.js。但是我在数据属性方面有问题。我想向选择选项添加数据属性。 我有如下默认选择: <option data-open-balance="false" selected="selected" value="1">PNP.SI.080416</option> $('select').selectize({ render: { option: function (data, escape) {
<option data-open-balance="false" selected="selected" value="1">PNP.SI.080416</option>
$('select').selectize({
render: {
option: function (data, escape) {
return "<div data-open-balance='" + escape(data.openBalance) + "'>" + escape(data.text) + "</div>"
}
}
})
PNP.SI.080416
但当我将selectize添加到此select时,它会变成:
<div data-value="1" data-selectable="" class="selected">PNP.SI.080416</div>
PNP.SI.080416
我看到它的“item对象”只获取值和文本。那么,我怎样才能将其他数据属性添加到它的项目对象中呢?我看过文档,他们说如果你想将自定义属性添加到元素中,你应该使用
dataAttr
选项,默认情况下它是数据
。因此,在您的情况下,代码将如下所示:
<option data-open-balance="false" selected="selected" value="1">PNP.SI.080416</option>
$('select').selectize({
render: {
option: function (data, escape) {
return "<div data-open-balance='" + escape(data.openBalance) + "'>" + escape(data.text) + "</div>"
}
}
})
HTML
<select>
<option data-data='{"openBalance": true}' selected="selected" value="1">PNP.SI.080416</option>
</select>
UDATE
如前所述,为了保护您的网站或web应用的安全,您应该在渲染回调中使用escape
方法。如果您想在data.text
中显示html
标记,也可以使用它。更新后的示例如下所示:
<option data-open-balance="false" selected="selected" value="1">PNP.SI.080416</option>
$('select').selectize({
render: {
option: function (data, escape) {
return "<div data-open-balance='" + escape(data.openBalance) + "'>" + escape(data.text) + "</div>"
}
}
})
$('select')。选择({
呈现:{
选项:函数(数据、转义){
返回“+转义(data.text)+”
}
}
})
如果有人想使用php,可以使用此
。在数据标记中使用单引号非常重要,因为JSON使用双引号“对于结构。由于JS解决方案受XSS约束,因此被否决。如果data.text包含html标记或简单的
,它将打破下拉列表。为此,提供了转义函数,以便您可以在返回数据之前转义数据。结果返回应该是:return”“+escape(data.text)+
@Kyborek尽管在我看来,它与问题无关,但我已经用您的注释更新了我的答案,谢谢。