2016-05-11 51 views
0

我正在努力找出這裏有什麼問題。我使用Jquery創建一個div元素,其中包含多個子元素。 這個div是點擊一個按鈕創建並具有可變採取的ID:嘗試根據ID將值分配給輸入標籤時出現問題

 operator_list = 'something'; 
     single_value_input = 'something_else'; 
     input = attribute_list + operator_list + single_value_input; 
     input_id = attribute_list; 

     // create input text area with id of the single value 
     $("#added_rules").append('<div class="input-group"><div class="input-group-btn" id="erase_query"><a href="#" class="btn btn-primary btn-mg" data-toggle="modal" data-target="#myModal" title="Help" ><span class="glyphicon glyphicon-minus"></span></a></div><input type="text" class="form-control" id="' + input_id + '" placeholder="" data-toggle="tooltip" title="" readonly></br></div>'); 

然後我嘗試使用jQuery來代替輸入標籤中的一些值:

$("#" + input_id).val(input); 

而且它不沒有工作。沒有任何反應,我在開發人員工具中沒有任何錯誤。 輸入標籤的分配ID是根據用戶的輸入生成的,其形式爲:'NAME_1> 24'也許問題與轉義字符有關。

當我嘗試將input_id分配給a字符串,而不是分配給它一個變量,然後它的工作。但這不是我想要的。

+0

我希望你有一個'var input_id'在你的代碼的某處 – madalinivascu

+0

我確實在問題的頂部聲明瞭input_id。你說我應該聲明爲:var input_id?這將使其成爲一個全球變量。我爲什麼要這個? – user1919

+1

@dkar madalin應該將他的評論標記爲* offtopic *(或'unrelated'),因爲它不是與事件相關的事件。 –

回答

2

它不工作,因爲你的「ID」包含$("#"+selector)正在回升CSS選擇器的值。

$("#" + input_id).val(input); 

成爲

$("#NAME_1>24").val(input); 

它說發現是#NAME_1子項中所有的 「24」 的元素 - 這顯然是沒有意義的。

最簡單的選擇是不在您的ID中包含css選擇器。

如果無法做到這一點,你可以使用屬性匹配,如:

$("['id=" + input_id + "']").val(input); 

,但是這不會是非常有效的。

+0

謝謝。它使現在一切都清楚了。 – user1919

1

直接串接在追加

$("#added_rules").append('<div class="input-group"><div class="input-group-btn" id="erase_query"><a href="#" class="btn btn-primary btn-mg" data-toggle="modal" data-target="#myModal" title="Help" ><span class="glyphicon glyphicon-minus"></span></a></div><input type="text" class="form-control" id="' + input_id + '" placeholder="" data-toggle="tooltip" title="" readonly value="'.value.'"></br></div>'); 
+0

沒有想到這一點。我試過這樣,它的工作原理,但我不知道是否它是一個良好的做法,以設置一個元素的ID,如:<> =等 – user1919

+0

@dkar爲什麼不使用類? – madalinivascu

+0

這些似乎更像是一個xy問題 – madalinivascu

相關問題