Кнопка «Поиск» во всех формах с textareas с jquery - PullRequest
2 голосов
/ 18 мая 2010

Я работаю над плагином Firefox, который ищет на веб-странице все текстовые поля и помещает предупреждение перед кнопкой отправки.

мой код выглядит так

var submitWarning = content.document.createElement("div");
submitWarning.innerHTML = "Fancy Message";
$('textarea', window.content.document).each(function() {
    var form = $(this, window.content.document).parents('form:first');
    $(form, window.content.document).children('input[type=submit]').each(function() {
         form.insertBefore(submitWarning, this);
    });
});

если я ищу все отправленные сообщения с $('input[type=submit]'.each, это работает нормально, но так как я добавил вещь с textarea и form:first, у меня возникли проблемы (ничего не происходит)

p.s. я пользуюсь window.content.document, потому что это плагин ff и без него ничего не получится

Ответы [ 3 ]

1 голос
/ 18 мая 2010

Вам нужно немного его изменить, например:

var submitWarning = content.document.createElement("div");
submitWarning.innerHTML = "Fancy Message";
$('textarea', window.content.document)
   .closest('form')
   .find('input[type=submit]')
   .before(submitWarning);

Синтаксис аргумента: $(selector, context), при поиске формы сначала есть .closest(), что облегчает эту задачу, даже если у вас есть элемент, вы можете просто использовать $(this) внутри .each(), нет необходимости искать его снова. Кроме того, вы можете использовать .before(), чтобы сделать это проще:)

1 голос
/ 18 мая 2010

Селектор : has () - лучший выбор для меня. Избавьтесь от своего обширного кода и используйте его вместо этого.

var buttons = $("form:has(textarea) input[type=submit]", window.content.document);
$("<div>").html("Fancy Message").insertBefore(buttons);
0 голосов
/ 18 мая 2010

Попробуйте var form = $(this, window.content.document).closest('form');. Не уверен, что это билет, но это первое, что у меня в голове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...