寻找JQuery来检查图像可见性。图像控制在转发器控件内

时间:2011-07-26 04:46:05

标签: jquery asp.net

下面的等效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都是真实的。

由于

4 个答案:

答案 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}}

上的jQuery文档
  

visibility: hiddenopacity: 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

之前加#

我认为这会有用