2013-03-11 3 views
0

У меня есть кнопка, добавленная модулем третьей части. При нажатии этой кнопки третий модуль отправляет запрос ajax (я не могу изменить код третьей стороны). Как я могу скрыть эту кнопку на ajaxStart и показать ее на ajaxStop?скрыть нажатый вход на ajax

Я пробовал:

$('#buttonId').click(function() { 
    $(this).ajaxStart(function() { $(this).hide(); }).ajaxStop(function() { $(this).show(); }); 
}); 

Но это не работает правильно.

ответ

0

я нашел простое решение, спасибо за помощь:

var tmp = false; 

$('.button').click(function() { 
    $(this).hide(); 
    tmp = $(this); 
}); 

$(document).ajaxStop(function() { 
    if (tmp) { 
     tmp.show(); 
     tmp = false; 
    } 
}); 
0

См скрипка: http://jsfiddle.net/4YJyk/2/

$('#buttonId').click(function() { 
    $(this).ajaxStart(function() { $("#buttonId").hide(); }).ajaxStop(function() { $("#buttonId").show(); }); 
}); 

Отредактировано

+0

У меня нет доступа к HTML третьей стороны и JavaScript. Может быть, попробуйте добавить этот динамический диапазон? –

+0

Я думаю, что конечная проблема заключается в том, как добавить ajaxStart для динамического добавленного элемента? –

+0

Вызывается функция ajaxStart? – tymeJV

0

проблема заключается в использовании этого для анонимной функции в этой функции this, связанное с функцией не событие щелчка, так что вы можете использовать этот подход,

$('#buttonId').click(function() { 
    var button = $(this); 
    button.ajaxStart(function() { button.hide(); }).ajaxStop(function() { button.show(); }); 
}); 

EDIT: После вашего комментария я проверяю ajaxStart I tho Это какой-то плагин, но это глобальное событие, поэтому вы не можете присоединить этого парня к кнопке, которую вы можете присоединить только к документу, и когда запрос AJAX запускается или заканчивается связанное с ним событие. Пожалуйста, смотрите здесь. http://api.jquery.com/ajaxStart/ Когда вы присоединяете это событие к объекту, вы можете получить к нему доступ, но он никогда не вызывает триггер события. Поэтому вы можете сделать что-то подобное.

$(document).ajaxStart(function() { 
    $("#buttonId").hide(); 
}); 

$(document).ajaxStop(function() { 
    $("#buttonId").show(); 
}); 

Чтобы инициировать это событие, вам необходимо выполнить запрос AJAX;

$("#buttonId").click(function() { $("#divId").load("DivContent.aspx") }); 

Надеюсь, это поможет.

+0

спасибо за помощь, но я попробовал, и ваша версия - тоже не работает :( –

+0

@IgorLadela вы можете проверить мой отредактированный ответ и сообщить мне, если это поможет. –

Смежные вопросы