У меня есть код, который динамически добавляет группы полей формы на страницу с использованием фреймворка underscore
, и у меня проблема с получением полей ввода шаблона, поэтому я не знаю, делаю ли я что-то не так, чего не вижу.
Шаблон underscore
выглядит следующим образом:
<script type="text/template" id="redirection_url_element">
<tr>
<td>
<input type="text" class="regular-text" placeholder="<?php esc_attr_e( 'Enter the redirection URL', 'WPL' ); ?>" value="<%= (typeof( redirection_url ) !== 'undefined') ? redirection_url : '' %>" data-name="redirection_url" data-group="redirection" />
</td>
<td>
<input type="text" class="regular-text" placeholder="<?php esc_attr_e( 'Weight', 'WPL' ); ?>" value="<%= (typeof( redirection_weight ) !== 'undefined') ? redirection_weight : '' %>" data-name="redirection_weight" data-group="redirection" />
</td>
<td>
<i class="remove-parent-row">×</i>
</td>
</tr>
</script>
Итак, в моем коде javascript я делаю следующее:
console.log ( $ ( '#redirection_url_element' ).find( ':input' ) );
и я получаю следующий результат:
prevObject: e.fn.init[1], context: document, selector: "#redirection_url_element :input"]
context: document
length: 0
prevObject: e.fn.init[1]
selector: "#redirection_url_element :input"
__proto__: m[0]
и кажется, что он не может найти поля ввода. Если вы видите, что длина равна 0
.
Как вы думаете, я делаю что-то не так? Есть ли ошибка, которую я не вижу?
ОБНОВЛЕНИЕ №1
Как я использую шаблон, выглядит следующим образом:
var $template_result = _.template ( $ ( '#redirection_url_element' ).html (), $data )
Вот как я перевожу шаблон в HTML на лету и не использую backbone
. Я просто ввожу $template_result
в элемент назначения.
ОБНОВЛЕНИЕ №2
Итак, @Wolff, таблица выглядит так:
<table class="repeater_table">
<tbody id="redirection_url_container">
<tr>
<td>
<input type="text" class="regular-text" placeholder="Enter the redirection URL" value="" data-name="redirection_url" data-group="redirection">
</td>
<td>
<input type="text" class="regular-text" placeholder="Weight" value="" data-name="redirection_weight" data-group="redirection">
</td>
<td>
<i class="remove-parent-row">×</i>
</td>
</tr>
</tbody>
</table>
ОБНОВЛЕНИЕ №3
Хорошо, я нашел решение благодаря заметке @Marcos Pérez Gude, и оно выглядит следующим образом:
console.log ( $( $.parseHTML( $ ( '#redirection_url_element' ).text() ) ).find( ':input' ) );
Я знаю, что это как-то уродливо, но это работает для меня. Как вы думаете, есть ли лучший способ достичь вышеизложенного?
value="<%= (typeof( redirection_weight ) !== 'undefined') ? redirection_weight : '' %>"
. Троичное условие, которое вы можете написать в Backbone View и передать правильное значение шаблону, которое вы должны написатьvalue="<%= redirection_weight%>"
, и оно может быть пустым без проблем. - person Marcos Pérez Gude   schedule 01.12.2015<script>
не содержит HTML. Он содержит текст. Селекторы jQuery здесь не работают. - person Tomalak   schedule 01.12.2015backbone
. Я используюjQuery
и перевожуunderscore
на лету. - person KodeFor.Me   schedule 01.12.2015@Wolff
не отправляет мне сообщение,@A.Wolff
- person A. Wolff   schedule 01.12.2015$('#redirection_url_container').find(':input');
. Если теперь ваша цель состоит в том, чтобы нацеливать элементы до их рендеринга, использование$.parseHTML( $ ( '#redirection_url_element' ).text() )
является хорошим решением, лучше, чем просто использование$( $ ( '#redirection_url_element' ).text() )
- person A. Wolff   schedule 01.12.2015