JQuery在动态加载时调用<script>标记</script>

时间:2013-06-21 15:39:50

标签: javascript jquery magicsuggest

  

如何找到调用JQuery脚本的标记   标签是动态加载的,所以不会是最后一个   页面上的标签?

我正在使用MagicSuggest autosuggest库。我想根据它们的内容给某些建议项目提供不同的背景颜色,我现在正在通过在标记中添加JQuery来实现,我将其添加到String中,返回将在选择div中呈现。然后,为了获得项目的div,我需要基本上获取标记的parent(),并更改它的css()属性。但是,如何获取当前脚本标记呢?

我目前为每个新标签分配了一个通过递增JS变量生成的id - 这可行,但不是很“好”!无论如何我可以用JQuery直接定位标签吗?

如果它可能更清楚,这是我当前的selectionRenderer函数。

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;
                },

1 个答案:

答案 0 :(得分:0)

为什么不在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
    });