2012-08-06 217 views

回答

3

你不應該使用的元素和屬性選擇器之間的空間,目前你的選擇試圖找到與輸入元素中屬性value='here'一個元素,請嘗試以下操作:

$('#check').click(function(){ 
    alert($('input[value="Here"]').attr('id')); 
}) 

DEMO

+0

感謝,並且在該示例爲什麼不工作http://jsfiddle.net/mHYsJ/3 /? – 2012-08-06 19:00:56

+0

@MickAsgorther歡迎您,因爲'輸入[值=「這裏」]'有一流的'無父test'試試這個:http://jsfiddle.net/mHYsJ/4/ – undefined 2012-08-06 19:02:42

2

刪除空間應爲:

alert($('input[value="Here"]').attr('id')); 
+0

感謝,在這個例子中,爲什麼不工作http://jsfiddle.net/mHYsJ/3/? – 2012-08-06 19:01:29

+0

因爲你正在尋找與該類測試與等於這裏的價值孩子輸入元素的父元素...試試這個:'警報($(「input.test [值=‘這裏’]」) .attr('id'));' – Gabe 2012-08-06 19:09:25

2

刪除選擇器中的空間。

$('input[value="Here"]').attr('id') 

該空間意味着「後裔」。

+0

謝謝,在這個例子中爲什麼不工作http://jsfiddle.net/mHYsJ/3/? – 2012-08-06 19:01:11

+0

@MickAsgorther:就像我說的,空間意味着「後裔」。您正在尋找一個屬於'.test'小孩的輸入。你想'$('input.test [value =「Here」]')'。 – 2012-08-06 19:04:13

+0

這會返回我的對象​​ – 2012-08-06 19:12:42

0

這裏是一個有用的功能(從here截取),其獲得包含值的所有元素用於指定屬性:

var getAllElementsWithAttribute = function (attribute) { 
    var matchingElements = []; 
    var allElements = document.getElementsByTagName('*'); 
    for (var i = 0; i < allElements.length; i++) { 
     if (allElements[i].getAttribute(attribute)) { 
      matchingElements.push(allElements[i]); 
     } 
    } 
    return matchingElements; 
}; 
+0

如果沒有明確的歸屬地,請勿複製別處的內容。它被視爲剽竊。請參閱http://stackoverflow.com/help/referencing – Matt 2016-04-03 18:54:12