2012-06-20 2 views
2

Используя следующий код, я могу вставить новую строку в таблицу (#courseelements).отсутствует) после списка аргументов? jQuery

$("#addbutton").click(function() { 
     $('#courseelements > tbody:last').append('<tr><td>Helloworld</td></tr>'); 
    }); 

Однако, я хотел бы заменить Helloworld с <select> элементом. Так что-то вроде этого:

$("#addbutton").click(function() { 
     $('#courseelements > tbody:last').append('<tr><td> 

     <select class='plan_id'> 
      <option value='1'>Description</option> 
      <option value='2'>Description</option> 
      <option value='3'>Description</option> 
     </select> 


     </td></tr>'); 
    }); 

Но это дает мне «не хватает) после списка аргументов» на первом апострофа '<select class='

Любые идеи, почему?

+0

дез получил его, прежде чем я мог бы, но вы даже можете увидеть в вашем вопросе, окраска различна для plan_id, так как он обрабатывается как снаружи строки –

+0

(Вот почему он платит, чтобы использовать * Соответствующий * редактор - вид, который делает подсветку синтаксиса, отступы, возможно даже статический анализ и т. д.) –

ответ

4

Вы забыли экранировать кавычки:

$("#addbutton").click(function() { 
    $('#courseelements > tbody:last').append('<tr><td> 

    <select class=\'plan_id\'> 
     <option value=\'1\'>Description</option> 
     <option value=\'2\'>Description</option> 
     <option value=\'3\'>Description</option> 
    </select> 


    </td></tr>'); 
}); 

качестве альтернативы вы можете обернуть всю прилагаемую строку в двойных кавычках insetead одинарных кавычек:

$("#addbutton").click(function() { 
    $('#courseelements > tbody:last').append("<tr><td> 

    <select class='plan_id'> 
     <option value='1'>Description</option> 
     <option value='2'>Description</option> 
     <option value='3'>Description</option> 
    </select> 


    </td></tr>"); 
}); 
+0

Если вы идете по экрану эвакуации, вам нужно будет избежать кавычек в 'option value = '1'' и т. д., а также. –

+0

Да, я пропустил это, спасибо Джейкобу :) – Zbigniew

1
var select=$("<select class='plan_id'></select>") 
    .append("<option value='1'>Description</option>") 
    .append("<option value='2'>Description</option>") 
    .append("<option value='3'>Description</option>"); 

$('#courseelements > tbody') 
.append($("<tr><tr>")) 
.append($("<td></td>") 
.append(select)); 

DEMO.

1

Вам нужно использовать другой тип кавычек для кавычек внутри вашего HTML-кода, чем для r цитаты, связанные с HTML:

$("#addbutton").click(function() { 
     $('#courseelements > tbody:last').append("<tr><td> 

     <select class='plan_id'> 
      <option value='1'>Description</option> 
      <option value='2'>Description</option> 
      <option value='3'>Description</option> 
     </select> 


     </td></tr>"); 
    }); 
+0

Это дает мне «неисчерпаемый строковый литерал» – David

+0

Теперь он работает, когда у меня есть все на одной линии – David

1

Вы должны использовать разные кавычки.

select class="plan_id"> 

double здесь, так как вся строка разделена одиночной.

1

изменить одиночные кавычки двойные кавычки внутри string-

<select class="plan_id"> 
      <option value="1">Description</option> 
      <option value="2">Description</option> 
      <option value="3">Description</option> 
     </select> 

или избежать их с \ как-

<select class=\'plan_id\'>...... 
0

И если вы хотите, чтобы вызвать $ (''). Присоединять через PHP echo, например:

$info= "<div style=\'font-size:9px;\'> 
    <img src=\'./img/filtro.png\'>Some tips 
</div>"; 
echo "<script type='text/javascript'> 
    $('#divTips').append('$info'); 
</script>"; 

Обязательно замените все свои линии разломов раньше, является:

$info= preg_replace('/\s+/', ' ', $info); 
Смежные вопросы