0

我有一个简单的 div。

<div id="error" class="notifications" runat="server" visible="false" ClientIDMode=Static></div>

正如您所注意到的,这个 div 具有runat="server"因此我可以从服务器操作它,以及ClientIDMode=Static使服务器不更改 ID,并visible="false"使其从一开始就隐藏。

在 ASP 中执行一些代码后,我通过以下方式显示 div:

error.Visible = true;

现在我做了一个小的 JQuery 函数来隐藏这个 div,以防我点击它。

$("#error").click(function() {
        $(this).fadeOut();
});

这没有用,我也更换$("#error")了,$(".notifications")但没有成功。

注意:如果我删除visible=false并单击它,它会消失,它正在工作。

更新我忘了提到当我点击它时显示 div 的按钮和 div 都在一个UpdatePanel(对于 Ajax)内,当我将它们放在它之外时,一切正常(但页面刷新)。

4

2 回答 2

1

用这个

<div id="error" class="notifications" runat="server" href="javascript:void(0);"  onclick="fademe('errordiv')" visible="false" ClientIDMode=Static></div>

并添加javascript函数

function fademe(id){

alert('errordiv is clicked');
var container=document.getElementById('error');
containe.fadeOut();


}

或者

function fademe(id){

    alert('errordiv is clicked');
    $('#error').fadeOut();


    }

或者

function fademe(id){

    alert('errordiv is clicked');
   error.fadeOut();


    }
于 2013-06-27T08:26:03.090 回答
0

盲猜:

在节点实际出现在 DOM 中之前$('#error').click(function(){ ... }),您正在从您的$(function(){ ... }),调用。#error

如果是这种情况,您可以使用带有以下.on功能的事件委托:只要您UpdatePanel在页面加载时出现在 DOM 中:

$(UpdatePanel).on('click', '#error', function(){ ... });

小提琴

或者您可以使用document

$(document).on('click', '#error', function(){ ... });

小提琴

这是事件委托的一个很好的解释:Direct vs. Delegated - jQuery .on()

于 2013-06-27T08:34:55.270 回答