Я использую jQuery form plugin и хочу, чтобы этот плагин использовался на каждом form.ajaxify
. Поэтому у меня есть следующее:
$('form.ajaxify').ajaxForm(
// the options
);
С HTML <form class="ajaxify" ...> ... </form>
.
Теперь у меня есть некоторые опции, которые я хочу передать всегда, например dataType:'json'
. В дополнение к этому, я хочу, чтобы иметь возможность поставить больше возможностей в form
тега, например:
Это действует в соответствии с the docs on .data()
.
Так что я думал, что буду использовать jQuery.extend()
. Я пытался поставить его так:
$('.ajaxify').ajaxForm(
jQuery.extend(
{
dataType: 'json'
},
$(this).data('ajaxify-options')
)
);
Однако, это не работает: только буквальный объект передается, и ничто не будет продлен. I предположим, что это не работает, потому что $(this)
больше не ссылается на элемент form.ajaxify
. Это верно? Обычно можно было сохранить $(this)
в переменной, однако это означало бы усложнение кода, верно? Это было бы невозможно на одной линии больше. Или есть другое решение?
То, как вы вызываете '. $ .extend()', расширяемый объект - это тот литерал объекта, который вы передаете в качестве первого параметра. Вы не сохраняете ссылку на этот объект в любом месте, поэтому, хотя вызов '$ .extend()' "работает", вы не можете получить доступ к результатам. * edit * неважно, я плотный или сумасшедший :) – Pointy
@Pointy Я не уверен, что я понял, что вы имеете в виду, но мне не нужно получать доступ к результатам; они используются как опции для '$ (. ajaxify) .ajaxForm'. – Keelan
@Pointy: Я думаю, что '$ .extend' возвращает расширенный объект. –