2010-02-08 59 views
1

我試圖通過名稱在<p>中選擇一個<div>,但它返回0個結果。相同類型的選擇適用於<input><span>,但不適用於<select><div>。下面的代碼演示了我的意思:jquery查找div或按名稱選擇返回0結果

<html> 
<head> 
<script type="text/javascript" src="jquery-1.4.1.min.js"></script> 
</head> 
<body> 
    <p id="foo"> 
     <input type="text" name="tl-label" /> 
     <select name="tl_type"> 
      <option value="select_type">Select type</option> 
      <option value="field">Field</option> 
      <option value="text">Text label</option> 
      <option value="flag_set">Flag set</option> 
     </select> 
     <span name="manip-links"> 
      <a name="move_up" href="#">[move up]</a> 
      <a name="move_down" href="#">[move down]</a> 
      <a name="delete" href="#">[delete]</a> 
     </span> 
     <div name="field-params"> 
      field params 
     </div> 
     <div name="text-params"> 
      text params 
     </div> 
     <div name="flag-set-params"> 
      flag set params 
     </div> 
    </p> 
</body> 
<script type="text/javascript" language="JavaScript"> 
<!-- 
    var foo = $('#foo'); 
    foo.tl_label = foo.find('input[name=tl-label]'); 
    foo.tl_type = foo.find('select[name=tl-type]'); 
    foo.manip_links = foo.find('span[name=manip-links]'); 
    foo.field_params = foo.find('div[name=field-params]'); 
    foo.text_params = foo.find('div[name=text-params]'); 
    foo.flag_set_params = foo.find('div[name=flag-set-params]'); 

    $('body').append('<p>' + 
     'tl_label: ' + foo.tl_label.size() + '<br/>' + 
     'tl_type: ' + foo.tl_type.size() + '<br/>' + 
     'manip_links: ' + foo.manip_links.size() + '<br/>' + 
     'field_params: ' + foo.field_params.size() + '<br/>' + 
     'text_params: ' + foo.text_params.size() + '<br/>' + 
     'flag_set_params: ' + foo.flag_set_params.size() + '<br/>' + 
     '</p>'); 
//--> 
</script> 
</html> 

底部附加的痕跡讀取(在Firefox 3.5.6):

tl_label:1
tl_type:0
manip_links:1個
field_params :0
text_params:0
flag_set_params:0

他們都應該閱讀1.什麼我缺少什麼?

+0

您應該選擇短劃線('-')**或**下劃線('_')作爲單詞分隔符,因爲兩者似乎都使您感到困惑。 – 2010-02-08 17:00:10

回答

4

你在代碼裏面有一個破折號而不是下劃線。 (或者在「select」元素名稱中使用下劃線而不是短劃線;其中一個或另一個:-)

另外,div元素不能具有name屬性,我不這麼認爲。使用「id」並用「#whatever」選擇。

+0

我不認爲我在邏輯層面上與下劃線混合了。我的問題是在不能使用的情況下使用name屬性。我的目標是動態生成HTML元素,並且我發現了一個相當有趣的方法:在HTML中使用隱藏模板,按實例複製它,並提取/刪除ID並將它們用作鍵來引用實例元素。 – 2010-02-09 22:40:38

+0

在你發佈的示例代碼中,select元素具有「tl_type」的「名稱」屬性,但是在代碼中,您在該調用中查找「select [name = tl-type]」來查找。第一個是下劃線,第二個是短劃線。 – Pointy 2010-02-09 23:21:54