Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $(this).remove() не работает на форме с ajaxForm() (https://javascript.ru/forum/jquery/39742-%24-remove-ne-rabotaet-na-forme-s-ajaxform.html)

gait 10.07.2013 11:22

Цитата:

Сообщение от animhotep (Сообщение 261515)
я может не понял чё вам нужно, но формы по клику удаляются
http://codepen.io/anon/pen/pwaLu

Не по сабмиту, а по ajaxForm (нужно использовать jquery.form.js)

gait 10.07.2013 11:24

Цитата:

Сообщение от skrudjmakdak (Сообщение 261517)
мм. па попробуйте в консоль вот так вывести:
$(".test-form").ajaxForm(function() {
console.log($(this)[0]);
});

по идеи должен вернуть dom элемент

Object {url: "http://localhost:8080/fileupload/", type: "POST", isLocal: false, global: true, processData: true…}
accepts: Object
async: true
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
contents: Object
converters: Object
crossDomain: false
data: ""
dataTypes: Array[2]
flatOptions: Object
global: true
hasContent: true
iframeSrc: "about:blank"
isLocal: false
jsonp: "callback"
jsonpCallback: function () {
processData: true
responseFields: Object
success: function (data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
type: "POST"
url: "http://localhost:8080/fileupload/"
xhr: function () {
__proto__: Object

То есть выводит тоже, что и при console.log(this);
То есть в случае с ajaxForm (this) == $(this) ?? И как мне тогда выцепить форму, в которой произошел сабмит?

skrudjmakdak 10.07.2013 11:27

аа. он вам не dom возвращает, а аякс объект скорей, поэтому и косяк.
тогда замыканием можно сделать

animhotep 10.07.2013 11:28

Цитата:

Сообщение от gait
Я хочу, чтобы по сабмиту форма самоудалилась.

Цитата:

Сообщение от gait
Не по сабмиту, а по ajaxForm

еммм

skrudjmakdak 10.07.2013 11:28

var test-form = $(".test-form");

$(test-form).ajaxForm(function(ths) {
  return function(){
    console.log(ths);
  }
}(test-form));

gait 10.07.2013 11:33

Цитата:

Сообщение от animhotep (Сообщение 261522)
еммм

ajaxForm срабатывает при сабмите. Корректнее с моей стороны было бы сказать, что не просто при сабмите, а при сабмите с обработчиком ajaxForm, я извиняюсь, что ввел в заблуждение.

gait 10.07.2013 11:35

Цитата:

Сообщение от skrudjmakdak (Сообщение 261523)
var test-form = $(".test-form");

$(test-form).ajaxForm(function(ths) {
  return function(){
    console.log(ths);
  }
}(test-form));

Да, всё получилось! Спасибо! Сам бы реально не додумался...Еще раз спасибо!

animhotep 10.07.2013 11:35

ну это плагин и хз что конкретно он там возвращает
дайте id-шники формам и удаляйте по ним

gait 10.07.2013 12:18

Н-да, походу радость была не долгой. Код с замыканием удаляет все формы, а не ту, где произошел submit :(
var testForm = $(".test-form");  
$(testForm).ajaxForm(function(frm) {
  return function(){             
	  frm.remove();              
  }                              
}(testForm));


Цитата:

Сообщение от animhotep (Сообщение 261528)
ну это плагин и хз что конкретно он там возвращает
дайте id-шники формам и удаляйте по ним

А если у меня этих форм под ~50? Каждой давать id и на каждую вешать обработчик? Если выхода нет и с $(this) ничего не придумать, то так и сделаю, только потому что больше вариантов нет, но это очень некрасиво, долго и я чую, что такой подход неправильный

skrudjmakdak 10.07.2013 13:37

я честно с таким плагином не сталкивался, но может он какие то параметры передает в функцию?
var testForm = $(".test-form");  
$(testForm).ajaxForm(function(p1, p2, p3)
{  
 console.log(p1);
 console.log(p2);
 console.log(p3);
});


Часовой пояс GMT +3, время: 19:04.