当标签是动态加载的,所以不会是最后一个标签?
我正在使用MagicSuggest自动建议库。我想根据某些建议项目的内容为其提供不同的背景色,我目前正在通过在标记中添加JQuery来实现这一点,我正在将JQuery添加到String中,该String将返回到selectdiv中进行渲染。然后,要获得建议项目所在的div,我需要基本上获得标记的parent(),并更改其css()属性。但是,如何获取当前的脚本标记?
我目前为每个新标签分配了一个通过增加JS变量生成的id,这很有效,但不是很"好"!我是否可以用JQuery直接定位标签?
如果它可能会让它更清晰,下面是我当前选择的Renderer函数。
selectionRenderer: function(a){
var toRet = a.english;
var blueBgScript = "<script id=ft" + freeTextFieldID + ">$('#ft" + freeTextFieldID + "').parent().css('background', 'blue');</script>"
if(a.id==a.english){
toRet += blueBgScript;
freeTextFieldID++;
}
return toRet;
},
为什么不在afterrender
事件中添加一些代码?添加一些标签来标记需要不同背景的选项,然后检测父项并添加一个类(或编辑bg属性)或任何你喜欢的东西:
var newMS = $('#idStr').magicSuggest({
data: 'states.php',
displayField: 'english',
valueField: 'id',
selectionRenderer: function(a){
var toRet = a.english;
if(a.id==a.english) toRet = "<span class='freetext'>" + toRet + "</span>";
return toRet;
},
});
$(newMS).on('selectionchange', function(event,combo,selection){
var selDivs = $(event.target._valueContainer[0].parentNode).children('div'); //Get all the divs in the selction
$.each(selDivs,function(index,value){ //For each selected item
var span = $(value).children('.freetext'); //It if contains a span of class freetext
if(span.length == 1) $(value).css('background','blue'); //Turn the background blue
});