在 Grails 中调用 <g:remotelink> / Ajax 后下拉 bootstrap
Dropdown bootstrap after <g:remotelink> / Ajax call in Grails
我正在做一个 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)
;});
;}
问题是我在函数 dynamics 中声明了函数 $(".dropdown-toggle").dropdown();
但是在两次 ajax 调用之后 boostrap drowdowns 将不起作用,然后我通过在 $(document).ready(function()
中声明提到的函数找到了这个问题的解决方案,如下所示:
$(document).ready(function() {
$("#dynamic").addClass("dynamicBefore");
$(".dropdown-toggle").dropdown();
});
我正在做一个 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)
;});
;}
问题是我在函数 dynamics 中声明了函数 $(".dropdown-toggle").dropdown();
但是在两次 ajax 调用之后 boostrap drowdowns 将不起作用,然后我通过在 $(document).ready(function()
中声明提到的函数找到了这个问题的解决方案,如下所示:
$(document).ready(function() {
$("#dynamic").addClass("dynamicBefore");
$(".dropdown-toggle").dropdown();
});