我正在尝试创建一个简单的电梯网络应用程序。在那我想显示和隐藏两个div,同时使用ajax调用在同一页面中单击一个按钮。到目前为止,我尝试了以下代码。
在我看来
<div id="PGMainDiv" data-lift="ShowBookedTicket" style="width=400px;height=600px;border:2px solid #FF0000;border-radius:5px">
<div id="sampleDiv" style="font-size:15px;color:#19552D;padding:10px 5px 10px 10px">
This is a sample div which show and hide while ajax calling
</div>
<div style="padding-left:267px">
<button id="PGOK" value="OK" style="width:70px">OK</button>
</div>
</div>
<div id="ticketDiv" style="display:none;border:2px solid #FF00FF">
<p>This is a another sample div which show and hide while ajax calling</p>
</div>
在我的ShowBookedTicket片段中
class ShowBookedTicket {
def testFunction(s: String): JsCmd = {
JsCmds.Run("jQuery('#ticketDiv').show()")
JsCmds.Run("jquery('#sampleDiv').hide()")
//JsCmds.Function("testJsFunction",List("param"),SHtml.ajaxCall( () => JsRaw("""$('#ticketDiv').show()""")).cmd)._2
}
def render = "*" #> {
"#PGOK [onClick]" #> SHtml.onEvent(testFunction)
}
}
在这里,如果我只给出显示代码(
JsCmds.Run("jQuery('#ticketDiv').show()")
)的第一个div,则它工作正常。但是如果我给出第二行,那里什么也没有发生。并且在注释行中也尝试过,但这显示了一些错误(eclipse中的overloaded method value ajaxCall with alternatives: (jsCalcValue: net.liftweb.http.js.JsExp,jsContext: net.liftweb.http.JsContext,func: String => net.liftweb.http.js.JsCmd)net.liftweb.http.GUIDJsExp <and> (jsCalcValue: net.liftweb.http.js.JsExp,func: String => net.liftweb.http.js.JsCmd)net.liftweb.http.GUIDJsExp cannot be applied to (() => net.liftweb.http.js.JE.JsRaw)
)。任何人都可以给出答案。Thanxx .. !!
最佳答案
您忘记链接两个电话。您的函数仅将第二行作为jsCmd返回。请尝试以下操作:
def testFunction(s: String): JsCmd = {
JsCmds.Run("jQuery('#ticketDiv').show()") &
JsCmds.Run("jquery('#sampleDiv').hide()")
}
注意:如here所述,您还可以使用内置命令进行隐藏/显示:
def testFunction(s: String): JsCmd = {
JsCmds.JsShowId("ticketDiv") &
JsCmds.JsHideId("sampleDiv")
}