Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何让一个链接通过ajax获取数据,然后进行更改以允许隐藏数据?_Jquery_Ajax_Asp.net Mvc 2 - Fatal编程技术网

Jquery 如何让一个链接通过ajax获取数据,然后进行更改以允许隐藏数据?

Jquery 如何让一个链接通过ajax获取数据,然后进行更改以允许隐藏数据?,jquery,ajax,asp.net-mvc-2,Jquery,Ajax,Asp.net Mvc 2,我正在使用asp mvc 2,我有一个页面,上面有一些数据,我有一个链接,它将执行一个ajax请求,以获取一些数据并将其发布到页面上的一个div 一旦我有了数据,我希望某些东西变得可见,我可以单击它来切换包含数据的div的可见性,这样用户就可以显示/隐藏这些额外的信息,但我不希望原始链接再可见 我不介意原始链接是否更改了它的功能,即在加载数据之前,它会显示“显示数据”,然后一旦加载,它会更改为“隐藏数据”,如果隐藏,它会再次更改为“显示数据”,如果再次单击,它只会再次显示div(尽管从ajax调

我正在使用asp mvc 2,我有一个页面,上面有一些数据,我有一个链接,它将执行一个ajax请求,以获取一些数据并将其发布到页面上的一个div

一旦我有了数据,我希望某些东西变得可见,我可以单击它来切换包含数据的div的可见性,这样用户就可以显示/隐藏这些额外的信息,但我不希望原始链接再可见

我不介意原始链接是否更改了它的功能,即在加载数据之前,它会显示“显示数据”,然后一旦加载,它会更改为“隐藏数据”,如果隐藏,它会再次更改为“显示数据”,如果再次单击,它只会再次显示div(尽管从ajax调用重新加载数据不会是世界末日)


我的web fu和jQuery fu不够强大。我如何才能得到我想要的?我的头撞在这堵墙上,一天左右都没有一个真正令人满意的解决方案,我觉得我在理解事物如何工作的过程中一定遗漏了一些东西。

以下几点应该是可行的:

<a href="#" id="myToggler">Show</a>
<div id="myDiv">
</div>

<script type="text/javascript">
    $('#myToggler').click(function() {
        var link = $(this);
        var content = $('#myDiv');
        if(!content.data('isLoaded')) {
            content.load('path/to/something', function() {
                content.data('isLoaded', true);
            });
        }
        content.toggle(function() {
            if(content.is(':visible')) {
                link.text('Hide');
            } else {
                link.text('Show');
            }
        });
        return false;
    });
</script>

$('#myToggler')。单击(函数(){
var-link=$(这个);
var内容=$(“#myDiv”);
如果(!content.data('isLoaded')){
load('path/to/something',function()){
content.data('isLoaded',true);
});
}
content.toggle(函数(){
if(content.is(':visible')){
link.text('Hide');
}否则{
link.text('Show');
}
});
返回false;
});
更新 您指出,您将在单个页面上有许多带有切换链接的内容区域,因此对HTML和上面的脚本进行一次小的更改就可以做到这一点:

<div class="content-wrapper">
    <a href="#" class="toggler">Show</a>
    <div class="content">
    </div>
</div>

<script type="text/javascript">
    $('.toggler').click(function() {
        var link = $(this);
        var parent = link.parent('.content-wrapper');
        var content = parent.find('.content');
        if(!content.data('isLoaded')) {
            content.load('path/to/something', function() {
                content.data('isLoaded', true);
            });
        }
        content.toggle(function() {
            if(content.is(':visible')) {
                link.text('Hide');
            } else {
                link.text('Show');
            }
        });
        return false;
    });
</script>

$('.toggler')。单击(函数(){
var-link=$(这个);
var parent=link.parent('.content wrapper');
var content=parent.find('.content');
如果(!content.data('isLoaded')){
load('path/to/something',function()){
content.data('isLoaded',true);
});
}
content.toggle(函数(){
if(content.is(':visible')){
link.text('Hide');
}否则{
link.text('Show');
}
});
返回false;
});

按照这些思路应该可以做到:

<a href="#" id="myToggler">Show</a>
<div id="myDiv">
</div>

<script type="text/javascript">
    $('#myToggler').click(function() {
        var link = $(this);
        var content = $('#myDiv');
        if(!content.data('isLoaded')) {
            content.load('path/to/something', function() {
                content.data('isLoaded', true);
            });
        }
        content.toggle(function() {
            if(content.is(':visible')) {
                link.text('Hide');
            } else {
                link.text('Show');
            }
        });
        return false;
    });
</script>

$('#myToggler')。单击(函数(){
var-link=$(这个);
var内容=$(“#myDiv”);
如果(!content.data('isLoaded')){
load('path/to/something',function()){
content.data('isLoaded',true);
});
}
content.toggle(函数(){
if(content.is(':visible')){
link.text('Hide');
}否则{
link.text('Show');
}
});
返回false;
});
更新 您指出,您将在单个页面上有许多带有切换链接的内容区域,因此对HTML和上面的脚本进行一次小的更改就可以做到这一点:

<div class="content-wrapper">
    <a href="#" class="toggler">Show</a>
    <div class="content">
    </div>
</div>

<script type="text/javascript">
    $('.toggler').click(function() {
        var link = $(this);
        var parent = link.parent('.content-wrapper');
        var content = parent.find('.content');
        if(!content.data('isLoaded')) {
            content.load('path/to/something', function() {
                content.data('isLoaded', true);
            });
        }
        content.toggle(function() {
            if(content.is(':visible')) {
                link.text('Hide');
            } else {
                link.text('Show');
            }
        });
        return false;
    });
</script>

$('.toggler')。单击(函数(){
var-link=$(这个);
var parent=link.parent('.content wrapper');
var content=parent.find('.content');
如果(!content.data('isLoaded')){
load('path/to/something',function()){
content.data('isLoaded',true);
});
}
content.toggle(函数(){
if(content.is(':visible')){
link.text('Hide');
}否则{
link.text('Show');
}
});
返回false;
});

谢谢,我会尝试调整。我可能应该说我在页面上有几个这样的元素,所以没有固定的ID,因为ID是从视图中的数据生成的。但是,如果有帮助的话,它们都有相同的类。我可以修改函数以使用动态ID吗?@SamHolder请查看我答案的更新。如果如果您还有任何问题,我很乐意回答。非常感谢。这几乎是完美的。我只需要确保在加载数据时,内容是隐藏的,以便第一次切换可以显示出来。谢谢,我从中学到了很多。@SamHolder很高兴我能帮上忙!谢谢,我会尝试调整此内容。我应该说我有几个页面上的这些元素中有l个没有固定ID,因为ID是从视图中的数据生成的。但是,如果有帮助的话,它们都有相同的类。我可以修改函数以使用动态ID吗?@SamHolder请查看我答案的更新。如果您还有任何问题,我很乐意回答。非常感谢这几乎是p完美。我只需要确保加载数据时内容是隐藏的,这样第一次切换就会显示出来。谢谢,我从中学到了很多。@SamHolder很高兴我能帮上忙!