下面的等效JQuery是什么?
function ChooseProd(obj) {
var objectID = document.getElementById(obj.id);
var isVisible = objectID.style.visibility;
if (isVisible == "visible") alert("Image visible");
else alert("Not visible");
return false;
}
我试过
var isVisible = $(obj.id).is(":visible");
if (isVisible == "visible") alert("Image visible");
else alert("Not visible");
但没有工作
修改
ItemDataBound事件在
下面protected void repTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lnkBtn = e.Item.FindControl("lnkProdName") as LinkButton;
Image img = e.Item.FindControl("prodImg") as Image;
img.Attributes.Add("style", "visibility:hidden");
if (lnkBtn != null)
{
var tt = lbl.ClientID;
lnkBtn.Attributes.Add("onClick", "return ChooseProd(" + img.ClientID + ");");
}
}
}
Javascript就在
之下function ChooseProd(obj)
{
var isVisible = $('#' + obj.id).is(":visible");
if (isVisible) alert("Image visible");
else alert("Not visible");
return false;
}
但无论可见性如何:隐藏或可见,isVisible都是真实的。
由于
答案 0 :(得分:3)
我认为你的jQuery选择器是错误的,改变这个:
var isVisible = $(obj.id).is(":visible");
到此:
var isVisible = $('#' + obj.id).is(":visible");
jQuery函数$()
采用CSS-ish选择器,而不是原始ID。
此外,is
返回一个布尔值,而不是一个字符串,所以你只想要if(isVisible)
。
答案 1 :(得分:1)
is()
返回true或false。将您的if语句更改为if (isVisible)
答案 2 :(得分:1)
.is(":visible")
选择器无法在您的代码中使用,因为您正在设置visibility:hidden
。根据{{3}}
visibility: hidden
或opacity: 0
的元素被视为可见, 因为他们仍然在布局中消耗空间。在隐藏元素的动画期间, 在动画结束之前,元素被认为是可见的。在动画期间 显示一个元素,该元素被认为在动画开始处可见。
jQuery中的工作代码段
function ChooseProd(objID) {
var $obj = $("#" + objID);
var isVisible = $obj.css('visibility') != 'hidden';
var isDisplayed = $obj.is(':visible');
var alertText = (isVisible && isDisplayed) ? "Visible element" : "Hidden Element";
alert(alertText);
return false;
}
<小时/> 最好设置
display: none
,以保存代码不会检查 visibility 属性
那么,为什么不尝试使用display:none
?
简而言之,如果您将img.Attributes.Add("style", "visibility:hidden");
img.Attributes.Add("style", "display: none");
repTest_ItemDataBound
,则代码将有效
工作演示:.is(":visible")
另一个全面的演示(从@mu分叉太短):http://jsfiddle.net/naveen/9zGXz/
答案 3 :(得分:0)
请尝试在obj.id
之前加#我认为这会有用