在 asp.net mvc 的 ajax 调用中使用 Jquery 全局加载每个按钮

发布于 2024-08-31 14:35:58 字数 1056 浏览 6 评论 0原文

我有以下场景: 我有一个按钮\链接,里面有一个图像,如下所示:

<button type="submit" id="myButton" class="button"><img src="../../Content/images/check.png" id="defaultImage"  />
SaveData!!!</button> 

我们在这里一切都好!现在我需要做的是: 我希望单击后,图像会更改之前加载到页面中的加载元素,如下所示:

<img id="loadingImage" src="../../Content/images/loader.gif" style="display: none;"  alt="loading"/>

然后,当加载完成后转回旧按钮图像时,我以以下代码结束:

function loader() {
    var $button = $('#myButton');

    if (btnState == '1') {
        $button.find('img').hide();
        $button.prepend($('#loadingImage'));
        $('#loadingImage').css({ 'display': 'inherit' });
        btnState = '0';
    }
    else {

        $button.find('img').hide();
        $button.prepend($('#defaultImage'));
        $('#defaultImage').show();

        btnState = '1';
    }

}

这可以解决“单个”按钮的问题(因为我在函数中传递了它的 ID)但是,例如,当我有一个每行都有一个按钮的网格时,我发现在管理具有许多按钮的屏幕时对每个按钮执行此操作是不可行的。主要问题是:如何使该方法适用于页面中一个特定类上的所有按钮/链接? 目标是:单击按钮,获取图像并更改它并停止(可以手动)。我只是不想钩住所有按钮。

I have the following scenario:
I have a button\link with a image inside like this:

<button type="submit" id="myButton" class="button"><img src="../../Content/images/check.png" id="defaultImage"  />
SaveData!!!</button> 

We are OK here! Now what I need to do is:
I want on the click that the image change for a loading element that is previously loaded in the page like this:

<img id="loadingImage" src="../../Content/images/loader.gif" style="display: none;"  alt="loading"/>

And then when the load complete turn back the old button image, I ended with this code:

function loader() {
    var $button = $('#myButton');

    if (btnState == '1') {
        $button.find('img').hide();
        $button.prepend($('#loadingImage'));
        $('#loadingImage').css({ 'display': 'inherit' });
        btnState = '0';
    }
    else {

        $button.find('img').hide();
        $button.prepend($('#defaultImage'));
        $('#defaultImage').show();

        btnState = '1';
    }

}

This does the trick for ONE SINGLE button(since I pass its ID in the function) but, when I have for example a grid with a button on each line, I found inviable when managing a screen with many buttons do this for each of then. The main question is: How can I make this method general for all buttons/links on one specific class in the page?
The goal is: Click a button, get the image and change it and stop(can be manual). I just don't wanna have to Hook ALL buttons.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

皇甫轩 2024-09-07 14:35:58

你应该做这样的事情,它将防止用户重复提交:

$('.button').click(function(evt) {
    evt.preventDefault();    
    var button = this;
    hideButton(button);
    $('ID or CLASS').load('AJAX FILE URL', function() {
         //On success, show button remove image
         showButton(button);
    });
});

function hideButton(button) {
    $(button).hide().after('<img src="../../Content/images/loader.gif" alt="loading"/>');
}

function showButton(button) {
    $(button).next('img').hide();
    $(button).show();

}

上面的所有代码都应该在 $(document).load 中

你的 HTML 应该如下所示:

<button type="submit" class="button"><img src="../../Content/images/check.png"   />SaveData!!!</button>

现在任何东西都不需要 Id。

You should do something like this, it will prevent the user from double submitting:

$('.button').click(function(evt) {
    evt.preventDefault();    
    var button = this;
    hideButton(button);
    $('ID or CLASS').load('AJAX FILE URL', function() {
         //On success, show button remove image
         showButton(button);
    });
});

function hideButton(button) {
    $(button).hide().after('<img src="../../Content/images/loader.gif" alt="loading"/>');
}

function showButton(button) {
    $(button).next('img').hide();
    $(button).show();

}

All of the code above should be in the $(document).load

Your HTML should look like:

<button type="submit" class="button"><img src="../../Content/images/check.png"   />SaveData!!!</button>

There is no need for Id's now on anything.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文