我正在一个Grails项目中,我的下拉菜单如下:

<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" >${category.getName()} <span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu">
        <li>
        <g:remoteLink controller="todo" action="getTodos" update="dynamic" method="GET" id="${category.id}" onSuccess="dynamics()">Ver
                    </g:remoteLink>
    </li>
            <li><a href="#">Modificar</a></li>
            <li><a>Eliminar</a></li>
    </ul>
</li>

和JS上的这个功能:
function dynamics(){
    $("#dynamic").addClass("dynamicSet").removeClass("dynamicBefore");
    $(".dropdown-toggle").dropdown();
}

问题是:ajax调用之后,下拉菜单的jscode $(".dropdown-toggle").dropdown();正常工作,但是紧接着执行了另一个ajax调用之后,下拉菜单崩溃了,除非重新加载整个页面,否则下拉菜单将无法工作。

任何人都知道如何解决此问题
提前致谢。

最佳答案

由于@Fernando建议实现自己的Ajax调用而不是使用<g:remotelink>,因此我将代码更改为:

<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" >${category.getName()} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
    <li><a data-id="${category}" onclick="dynamics('${category.id}')"  class="button">Ver
    </a></li>
    <li><a href="#">Modificar</a></li>
    <li><a>Eliminar</a></li>
</ul>
</li>

function dynamics(id){
        $.get("<g:createLink controller='todo' action='getTodos' />",  {"id":id}, function(respuesta){
              $("#dynamic").addClass("dynamicSet").removeClass("dynamicBefore").html(respuesta)
        ;});
;}

问题是我已经在函数动态中声明了函数$(".dropdown-toggle").dropdown();,但是在两次ajax调用后,boostrap drowdowns无法正常工作,然后我在$(document).ready(function()中声明了上述函数,从而找到了解决此问题的方法:
$(document).ready(function() {
        $("#dynamic").addClass("dynamicBefore");
        $(".dropdown-toggle").dropdown();
    });

关于javascript - 在Grails中<g:remotelink>/Ajax调用之后的下拉引导,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30016636/

10-12 06:57