我正在尝试在Selectize(http://brianreavis.github.io/selectize.js/)选择框中添加jQuery工具提示,但由于某种原因我遇到了一些问题。
以下是我的代码片段:
$(function() {
$("#myDropdown").selectize({
onChange: function(value) {
var ddOptions = {
1: triggerOpt1,
2: triggerOpt2,
3: triggerOpt3,
4: triggerOpt4
};
ddOptions[value]();
},
render: {
option: showItem,
item: showItem
}
});
$("#myDropdown .ddOption").tooltip({
position: "bottom left",
offset: [-2, 10],
opacity: 0.9
});
});
function showItem(data) {
return Handlebars.templates["dropdown"]({
itemClass: data.value,
label: data.text,
title: I18n["ddOption_" + data.value]
});
}
<select id="myDropdown">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
出于某种原因,我没有获得jQuery工具提示,而是获取本机浏览器工具提示。当我尝试在控制台中附加工具提示时,它工作正常..
有没有人遇到过这个问题?
编辑:类ddOption正被添加到把手模板中的选择项目中。
答案 0 :(得分:1)
我不了解Selectize,但我可以发现它是基于jQuery-ui的selectmenu,我遇到了同样的问题。
根本原因是jquery-UI隐藏了实际的select元素,并使用其他html构建一个全新的元素,模拟它并将其值与原始select标签同步。
所以,如果你捕获它,例如,通过它的id或类来做任何事情,你最终会修改一个隐藏的元素。
您应该使用ui-selectmenu-button类搜索兄弟跨度。但最好使用您首选的浏览器检查器,看看它的实际属性是否使用了选择插件。
答案 1 :(得分:0)
ddOptions是JS数组类型..你需要html元素才能获得悬停意图.. 所以尝试下面的代码..它可能会帮助你...
$("#myDropdown option").tooltip({
position: "bottom left",
offset: [-2, 10],
opacity: 0.9
});
});
答案 2 :(得分:0)
我找到了部分解决方案:
只有在工具提示消息是通用或等于的情况下才适用于在视图中采用Selectize插件的每个元素。
使用jQuery手动设置工具提示选项:
$(".selectize-control").tooltip({
placement: "top", // position
title: "Your Message"
});
答案 3 :(得分:0)
我已经创建了这段代码。希望对您有帮助。
这就是我将数据初始化为Selectize的方式
$.ajax({
type: 'GET',
url : 'tableConfig',
success : function(data) {
$('#idTrans').each(function() {
if (this.selectize) {
let list = data.filter(x => x.codigo === "TRANS");
for(let i = 0; i < list.length; i++){
this.selectize.addOption({value:list[i].idConfiguracion, text: list[i].valor, title: list[i].descripcion});
}
}
});
},
error: function (request, status, error) {
//alert("No se pudo realizar la operación por un error interno, contactese con el Administrador.");
}
});
然后,我可以自定义工具提示。
$('#idTrans').selectize({
render: {
option: function(data, escape) {
let txtTitle = data.title;
if(txtTitle === undefined || txtTitle === 'Ingrese Detalle:') txtTitle = '';
return '<div class="option">' +
'<div title="' + txtTitle + '">' + escape(data.text) + '</div>' +
'</div>';
},
item: function(data, escape) {
return '<div>'+ escape(data.text) + '</div>';
}
},
onChange: function (value) {
let tableConfig = $('#tableConfig').bootstrapTable('getData');
let list = tableConfig.filter(x => x.idConfiguracion === parseInt(value));
if (list.length > 0) {
let idProTrans = list[0].nivel_padre;
if (idProTrans !== null) {
$("#idProceso_Trans").val(idProTrans);
}
}
}
});
属性“ onChange”。也许这对您来说不是必需的,您也可以删除该部分。如您所见,在render属性中。我把“标题”作为工具提示
最后,看起来像这样。