我试图在listview中使用对象数据源弹出图像。
我希望当我们点击该行的图像时会弹出这个图像。
在我的代码中,它始终是弹出窗口中的第一个图像,我点击的图像(因为在编译时弹出“构建自身”而在运行时没有。
func animBall() {
//This is the general runAction method to make our ball change color
var animSpeedNow = self.updateAnimSpeed()
println(animSpeedNow)
var animBallAction = SKAction.animateWithTextures(ballColorFrames, timePerFrame: animSpeedNow,resize: false, restore: true)
self.runAction(animBallAction, completion: {() -> Void in
self.animBall()
})
}
func updateAnimSpeed() -> NSTimeInterval{
// Update the animation speed based on the velocity to syncrhonize animation with ball velocity
var velocX = self.physicsBody!.velocity.dx
var velocY = self.physicsBody!.velocity.dy
if abs(velocX) > 0 || abs(velocY) > 0 {
var veloc = sqrt(velocX*velocX + velocY*velocY)
var animSpeedNow: NSTimeInterval = NSTimeInterval(35/veloc)
let minAS = NSTimeInterval(0.017)
let maxAS = NSTimeInterval(0.190)
if animSpeedNow < minAS {
return maxAS
}
else if animSpeedNow > maxAS {
return minAS
}
else {
return animSpeedNow
}
}
else {
return NSTimeInterval(0.15)
}
}
感谢 (如果有一个解决方案来做图像按钮并且onclick也会显示弹出窗口。)
非常感谢
答案 0 :(得分:0)
您遇到的问题是您使用id myPopup引用控件并在同一itemTemplate中添加弹出窗口。对于每个项目,您要添加另一个具有相同id myPopup的div。因此,单击第三个图像将查找id myPopup,它将找到第一个元素。没有办法知道第二个或第三个弹出窗口是必需的。
您可以做的是确保您的ID是唯一的,因此点击第三张图片会查找第三张弹出窗口。 Todo你不应该自己设置id,但是你可以使用ClientID,它将在其中包含行索引的id。 Todo你需要设置runat =&#34; server&#34;对于你的弹出式div,所以你可以使用对它的ClientID的引用(按头部做,所以可以包含拼写错误):
<a href="#<%# Container.Item.FindControl("myPopup").ClientID %>" data-rel="popup" data-position-to="window">
<img src='<%# Eval("Image")%>' alt="Skaret View" style="height: 116px; width: 311px">
</a>
<div data-role="popup" ID="myPopup" runat="server" data-transition="flip" data-overlay-theme="b">
<p>This is my picture!</p>
<a href="#pageone" data-rel="back" class="ui-btn ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a><img src='<%# Eval("Image")%>' style="width: 800px; height: 400px;" alt="Skaret View">
</div>
我不认为这是最好的解决方案,但它确实解释了您在ASP.Net中关于客户端ID的概念出了什么问题。
备用单个弹出窗口 如果您单击多个图像,我认为您不需要看到多个弹出窗口。如果你总是需要看到你最后一次点击的图像你的概念是好的,但你的弹出窗口的位置不是。 因此,如果您将弹出窗口移出ListView,它只会被添加到页面一次,因此单击将找到单个弹出控件。您只需要使用jQuery在弹出窗口中设置相同的图像。
function SetImageInPopup() {
//Get the imageUrl from the image inside the hyperlink
var imageSrc = $("img", this).attr("src");
//Now find the image in the popup
var imgInpopup = $("mypopup > img");
//Now adjust the image src
imgInPopup.attr("src", imageSrc);
}
<a href="#myPopup" onclick="SetImageInPopup()"
替代jQuery对话框 如果您不需要使用特定的弹出逻辑,您可以查看使用jQuery的对话框并在弹出窗口中显示链接的内容
function ShowDialog() {
$(this).dialog(); //Specify specific dialog properties for your own dialog layout and behavior
}