2016-08-23 54 views
0

我有一個文本輸入的列表,其值基於某些選擇輸入的值進行操作。兩組輸入有具有平行結構的ID,如:如何使用jQuery獲取屬性值並從結果中提取子串

<select id="foo-dog-bar>, <input type="text" id="foo-dog-baz> 
<select id="foo-cat-bar>, <input type="text" id="foo-cat-baz> 
<select id="foo-fish-bar>, <input type="text" id="foo-fish-baz> 
<select id="foo-bird-bar>, <input type="text" id="foo-bird-baz> 

爲了能夠找到匹配的文本輸入,我需要搜索與對應ID的選擇輸入。在上面的例子中,這是中間有相同動物名稱的ID。

這裏是我到目前爲止,我的問題是怎麼辦的criteria變量:

jQuery('select[id$="-points"]').change(function() { 

    var value = jQuery(this).val(), 
     arr = ['cat', 'dog', 'fish', 'bird'], 
     criteria = jQuery(this)..., // whichever string in arr its ID contains 
     bar = jQuery(this).parent().find('#foo-'+criteria+'-bar').val(); 

    // do stuff... 

}); 

如何搜索的this的ID爲包含arr數組中的字符串,使該字符串criteria變量?在搜索這種類型的東西時我能找到的唯一東西是檢索數組項目的索引,但是這對我並沒有幫助。我想要實際的字符串。

在此先感謝。

+2

當然,我不會要求你張貼HTML,但我真的不明白你的問題,和你寫了」不是個沒有它就清除。 – Marc

+1

_此外,如果你不想發佈你的html,那麼這裏的HTML確實不相關,用僞代碼創建一個[mcve](http://stackoverflow.com/help/mcve)。如果你不想這樣做,不要在這裏問一個問題 – baao

+0

道歉,我意識到我最初遺漏了一個關鍵信息。我編輯了這個問題,試圖更加清晰和詳細。如果您有更具體的問題,請告訴我什麼不清楚。總的HTML結構真的與我無關。如有必要,我可以發佈它,但是當我將它發佈到與此類似的問題中時,它只會分散注意力,導致答案偏離正軌。在這種情況下,我只想知道如何在可能的字符串數組中搜索輸入的ID作爲字符串,並將該字符串設置爲「criteria」變量。 – cjl750

回答

1
  1. 以選擇HTML標籤的ID屬性值

    criteria = jQuery(this).attr('id'); // just call an .attr('id'); 
    
  2. 要通過ID與jQuery選擇元素 - 就像用純JS(JavaScript的),你不需要內嵌套找到元素元件ID是每個DOM/PAGE一個唯一的元件

    jQuery('#foo-'+criteria+'-bar').val(); 
    
  3. 可以使用分裂函數從字符串得到值:

    criteria = criteria.split('foo-')[1].split('-baz')[0];

完整的示例:

jQuery('select[id$="-points"]').change(function() { 
     var value = jQuery(this).val(), 
     arr = ['cat', 'dog', 'fish', 'bird']; 
     criteria = jQuery(this).attr('id'); 
     criteria = criteria.split('foo-')[1].split('-baz')[0]; // get the value you want using split() function 
     bar = jQuery('#foo-'+criteria+'-bar').val(); 
     // do other stuff... 
    }); 
+0

誰給了我一個負分 - 在這裏評論的原因。 – SergeDirect

+0

感謝您的建議,但這並不能幫助我,因爲我不能像您那樣使用'criteria'變量。我需要根據它們的ID具有相同的字符串匹配兩個元素;僅通過其ID標識一個元素是無益的。我將編輯這個問題來澄清。 – cjl750

+0

謝謝你的注意,我糾正了我的答案。 – SergeDirect