javascript - 重新加载 JQuery 和 CSS

标签 javascript jquery jquery-ui

我有一个链接,其中添加了 <tr>动态地使用 JQuery,但是我的 <tr>包含一些<td>其中包含 JQuery(第一个是日期选择器,最后一个删除当前的 <tr> )。当我添加这个 <tr> JQuery 及其 CSS 不起作用:\

Here's a Screenshot (the last <tr> is the <tr> which is added dynamically) : enter image description here

Here's the jquery code of adding dynamically :

<script>
          $('.AddResults').click(function(){

            // All the cols
            var jourVar = $('<td class="jr_td"><p><input type="text" class="datepicker" /></p><p class="ou">ou</p><p><input type="text" class="datepicker" /></p></td>') ;
            var creneauVar = $('<td class="cr_td"><select><option value="h1">10h30</option><option value="h2">11h30</option></select><select class="cr_td_s2"><option value="h3">10h30</option><option value="h4">11h30</option></select></td>') ;
            var repassageVar = $('<td class="rp_td"><select><option value="h5" SELECTED>2h00</option><option value="h6">3h00</option></select></td>') ;
            var menageVar = $('<td class="mn_td"><select><option value="h7" SELECTED>2h00</option><option value="h8">3h00</option></select></td>') ;
            var totalVar = $('<td class="tt_td"><strong>4h.</strong></td>') ;
            var pttcVar = $('<td class="pttc_td"><strong>88 &#8364;</strong></td>') ;
            var corVar = $('<td class="cor_td"><a href="#"><img src="img/ico/corbeille.png" alt="" width="13" height="13" /></a></td>') ;      

            //Create 2 new rows
            var newTitreRow = $('<tr><td class="bar_td" colspan=7><strong>PRESTATION ' + rowNumber + '</strong></td></tr>') ;
            var newContentRow = $('<tr class="ligne_suppr">').append(jourVar).append(creneauVar).append(repassageVar).append(menageVar).append(totalVar).append(pttcVar).append(corVar).append('<\/tr>') ;

            //Append the new row to the body of the #table_prest table
            $('#table_prest tbody').append(newTitreRow);
            $('#table_prest tbody').append(newContentRow);

            $('<style type="text/css">@import url("' + myStylesLocation + '")</style>').appendTo("#table_prest tbody");

            //Iterate row number
            rowNumber++;
          });
        </script>

And here's the datepicker code :

<script>
          $(function() {
            $( ".datepicker" ).datepicker({
              showOn: "button",
              buttonImage: "img/ico/jour_presta.png",
              buttonImageOnly: true
            });
          });
        </script>

And Here's the deleting code :

<script>
          $('.ligne_suppr a').click(function(e) {
            e.preventDefault();
            var parent = $(this).parent().parent();  // parent <tr> of the anchor tag
            var previous = parent.prev();        // <tr> before the parent <tr>

            parent.remove();
            previous.remove();

            rowNumber -- ;
          });
        </script>

您对这个问题有什么想法吗? 谢谢:-)

最佳答案

您需要了解日期选择器不仅仅是 CSS。它是一个 jQuery UI 插件,添加了功能和新的 DOM 元素。

因此,您的情况的问题不在于 CSS 未得到应用,而是 jQuery 功能未应用于动态创建的元素。

您需要为新元素重新运行日期选择器代码..

所以

日期选择器代码

function applyDatepicker(context){
   context = context || document;
   $( ".datepicker", context ).datepicker({
        showOn: "button",
        buttonImage: "img/ico/jour_presta.png",
        buttonImageOnly: true
   });
}
$(function() {
    applyDatepicker();
});

删除代码

$('#table_prest').on('click','.ligne_suppr a',function(e) {
    e.preventDefault();
    var parent = $(this).parent().parent();  // parent <tr> of the anchor tag
    var previous = parent.prev();        // <tr> before the parent <tr>

    parent.remove();
    previous.remove();

    rowNumber-- ;
});

用于动态添加代码的 jQuery

    $('.AddResults').click(function(){

        // All the cols
        var jourVar = $('<td class="jr_td"><p><input type="text" class="datepicker" /></p><p class="ou">ou</p><p><input type="text" class="datepicker" /></p></td>') ;
        var creneauVar = $('<td class="cr_td"><select><option value="h1">10h30</option><option value="h2">11h30</option></select><select class="cr_td_s2"><option value="h3">10h30</option><option value="h4">11h30</option></select></td>') ;
        var repassageVar = $('<td class="rp_td"><select><option value="h5" SELECTED>2h00</option><option value="h6">3h00</option></select></td>') ;
        var menageVar = $('<td class="mn_td"><select><option value="h7" SELECTED>2h00</option><option value="h8">3h00</option></select></td>') ;
        var totalVar = $('<td class="tt_td"><strong>4h.</strong></td>') ;
        var pttcVar = $('<td class="pttc_td"><strong>88 &#8364;</strong></td>') ;
        var corVar = $('<td class="cor_td"><a href="#"><img src="img/ico/corbeille.png" alt="" width="13" height="13" /></a></td>') ;      

        //Create 2 new rows
        var newTitreRow = $('<tr><td class="bar_td" colspan=7><strong>PRESTATION ' + rowNumber + '</strong></td></tr>') ;
        var newContentRow = $('<tr class="ligne_suppr">').append(jourVar).append(creneauVar).append(repassageVar).append(menageVar).append(totalVar).append(pttcVar).append(corVar).append('<\/tr>') ;

        //Append the new row to the body of the #table_prest table
        $('#table_prest tbody').append(newTitreRow);
        $('#table_prest tbody').append(newContentRow);

        applyDatepicker(newContentRow); // ADDED THIS LINE

        // removed line that re-added stylesheet.. not needed

        //Iterate row number
        rowNumber++;
      });

关于javascript - 重新加载 JQuery 和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076759/

相关文章:

Javascript sleep /延迟/等待函数

javascript - 如何使用 jQuery 随机显示一组元素?

javascript - 单击 map 外的按钮时,为所选图层打开 jquery ui 对话框

javascript - 如何使用主干布局管理器在主干中异步获取数据?

javascript - 增强 Knockout 中的数组项上下文

javascript - 使用 Ajax 将字符串数据发送到 Java

jQuery 多种表单和表单插件

javascript - jQuery 使用 "subquery"

Jquery UI - 标签表现得很奇怪

php - 在帖子中使用 jQueryUI Sortable