يتم تجريد العلامات من النص عند حقنه في موتولز عناصر

StackOverflow https://stackoverflow.com/questions/1412287

سؤال

وأنا أحاول أن بناء بعض الجافا سكربت في موتولز الذي جلب صف الجدول العلامات من الخادم، ثم يضيفه إلى جدول. لدي اسمه htmlAjax الكائن الذي تم ضبطه ككائن Ajax موتولز. الكائن يحصل HTML من الملقم بشكل صحيح (اختبار هذا في وحدة تحكم الحرائق)، ولكن عندما أحاول إضافة هذه العلامات إلى عنصر جديد، عناصر <td> يحصل تجريد بها. هنا هو وظيفة بلدي الذي يلتقط البيانات من طلب HTTP ومحاولات لإضافة صف:

htmlAjax.addEvent('onComplete', function (data) {
    var slot = new Element('tr');
    slot.setHTML(data);
    slot.injectInside($('volunteer_slots'));
});

والرد أعود من الملقم في data تبدو مثل هذا:

<td><div class="title" rel="60">
    <a class="modal" href="index.php?view=volunteerslot&amp;tmpl=component&amp;id=60" rel="{handler: 'iframe', size: {x: 650, y: 550}}" >test</a>
</div>
</td>
<td class="button_column">
    <img src="images/publish_x.png" />
</td>
<td>0 minutes</td>
<td><select name="volunteers[60]" id="volunteers60" class="inputbox"><option value="0"  selected="selected">(select...)</option><option value="63" >Joe LeBlanc</option><option value="64" >Test User</option><option value="65" >Test User</option><option value="66" >Test User</option><option value="67" >Test User</option></select></td>
<td><select name="total_time_spent[60][hours]" id="total_time_spent60hours" ><option value="0"  selected="selected">0</option><option value="1" >1</option><option value="2" >2</option><option value="3" >3</option><option value="4" >4</option><option value="5" >5</option><option value="6" >6</option><option value="7" >7</option><option value="8" >8</option><option value="9" >9</option><option value="10" >10</option><option value="11" >11</option><option value="12" >12</option><option value="13" >13</option><option value="14" >14</option><option value="15" >15</option><option value="16" >16</option><option value="17" >17</option><option value="18" >18</option><option value="19" >19</option><option value="20" >20</option><option value="21" >21</option><option value="22" >22</option><option value="23" >23</option><option value="24" >24</option></select>&nbsp;hours&nbsp;&nbsp;<select name="total_time_spent[60][minutes]" id="total_time_spent60minutes" ><option value="0"  selected="selected">0</option><option value="15" >15</option><option value="30" >30</option><option value="45" >45</option></select>&nbsp;minutes</td>
<td class="button_column">
    <img src="images/tick.png" />
</td>

وعندما أدعو setHTML على المتغير slot (يمر في data)، و<tbody> عنصر volunteer_slots ديه صف جديد، ولكن أن صف جديد يحتوي على كل شيء باستثناء العناصر <td>. هل هناك أي طريقة لمنع ذلك من الحدوث؟

هل كانت مفيدة؟

المحلول

وهذا مثير للاهتمام للغاية. في حين لا أستطيع أن أشرح ذلك، وأنا لا يملك الحل بالنسبة لك. عكس ترتيب الخاص بك setHTML() وinjectInside() خطوط، ويتم إدراج <td>s بشكل صحيح:

slot.injectInside($('volunteer_slots'));
slot.setHTML(data);

وأنت على ما يبدو باستخدام موتولز 1.11، ومع ذلك، يبدو أن هذا السلوك أن يحدث في 1.2 كذلك. غريب جدا! يجب أن يكون لديك شيء للقيام مع حقيقة أنه قبل حقن slots فار، فإنه ليس جزءا من DOM. آثار وضع HTML داخلي من عنصر غير DOM-قد تكون غير متوقعة؟ أتمنى أن تفسير ذلك. سآخذ لحفر أعمق عندما يكون لدي وقت.

نصائح أخرى

ما هو إصدار موتولز الذي تستخدمه؟ لست متأكدا إذا كان لديه أي علاقة مع ذلك، ولكن في الإصدار الأخير، وليس هناك (بقدر ما أنا على علم) طريقة setHTML، انها الآن set('html', data). وأعتقد أيضا أن injectInside أصبح slot.inject($('volunteer_slots')). ويساعد هذا الأمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top