2016-10-03 65 views
0

我有一个窗体的ID根据页面的变化。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我使用

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

附加说明:在这种情况下,“this”是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()); 
})