2016-10-03 7 views
0

У меня есть форма, где идентификатор изменяется в зависимости от страницы.jQuery как объединить это и переменную

Я пытаюсь получить значение входного имени email, но я использую $(this), чтобы убедиться, что я не конфликтую с другими формами, которые могут быть на одной странице.

Вот мой JQuery код:

jQuery(document).ready(function($) { 
    $('#layers-widget-form_builder-27 .builderForm').each(function() { 
     $(this).on("submit", function(event) { 
      event.preventDefault(); 
      var formData = $(this).serialize(); 
      var emailId ='[email protected]'; 
      var emailSubject ='New website form submission'; 
      var mcListID ='9069741672'; 
      var mcAPIkey ='d87ebb1e2bf13d4624009f2f5ea9a9aa-us12'; 
      var mcEmail = $(this + 'input[name="email"]').val(); 
      var mcLname ='last_name'; 
      var mcFname ='first_name'; 
      var mcForm = $(this); 

      ... 

     }); 
    }); 
}); 

Чтобы создать вар для электронной почты я использует

var mcEmail = $(this + 'input[name="email"]').val(); 

но это рвало синтаксические ошибки - что это правильный способ объединения $ это с селектором?

ответ

2

Вы можете использовать метод find, чтобы найти потомков внутри элемента.

var mcEmail = $(this).find('input[name="email"]').val(); 
+0

Только то, что мне нужно знать - спасибо :) –

+1

И в качестве альтернативы, '$ ('ввода [имя = "Отправить"]', это)'. См. [Контекст селектора] (http://api.jquery.com/jquery/#jQuery-selector-context). – showdev

+1

Дополнительные пояснения: В этом случае «это» - это сам узел DOM

. Говоря это + '.selector', вы добавляете строку к объекту, а затем пытаетесь обернуть его в jQuery - что не имеет смысла. Как видно из решения, вы создаете объект jQuery из формы, а затем вызываете метод 'find()' для поиска определенных потомков. – mhodges

0

Вы можете использовать selector как

$('my_selector p').click(function(){ 
    var selector = $(this).selector; 
    var combined = $(selector + '[name=email]'); 
    alert(combined.val()); 
})