2016-10-03 83 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()); 
})