首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS在克隆元素中不起作用

CSS在克隆元素中不起作用
EN

Stack Overflow用户
提问于 2016-03-08 10:16:37
回答 1查看 611关注 0票数 1

我是jquery的新手。我有一个简单的表单,它有一个add功能,基本上是通过使用clone()来复制表单。在克隆的形式中有一些我无法理解的东西-元素似乎不会像第一个(原始)形式那样显示正确的CSS,因为克隆的字段似乎不会触发事件(例如。是有重点的)。当我点击一个克隆的字段时,它不会显示为“已聚焦”,而且我也不能点击复选框。但是删除所有CSS,字段(例如,复选框)似乎工作得很好。

代码语言:javascript
复制
  <div class="activityWrapper">
  <table id="activityEntry1" class="activityTable activitySection" cellspacing="0">
  <tbody>
  <tr>
    <td style="height:21px">
    <div class="mdl-textfield mdl-js-textfield">
    <input class="mdl-textfield__input" name="activity" type="text" id="Activity">
    <label class="mdl-textfield__label" for="activity">Activity</label>
  </div>
    </td>

    <td class="selectField">
    <div class="fieldWrapper">
    <label class="mdl-typography--body-2" for="area">
      Area
      <select class="mdl-typography--body-1" id="area">
        <option selected>Select Area</option>
        <option value="1">1</option>
        <option value="2">2</option>
      </select>
      </label>
  </div>
    </td>
  </tr>
  <tr>

    <td>
    <div class="fieldWrapper">
    <label class="mdl-typography--body-2" for="classification">
      Classification
      <select class="mdl-typography--body-1" id="classification">
        <option selected value="">Select Classification</option>
        <option value="1">1</option>
        <option value="2">2</option>
      </select>
    </label>
  </div></td>
    <td colspan="2" rowspan="2">
    <div class="mdl-textfield mdl-js-textfield">
  <textarea class="mdl-textfield__input" type="text" rows="1" id="details_of_hazard"></textarea>
  <label class="mdl-textfield__label" for="details_of_hazard">Details of Hazard</label>
</div></td>
  </tr>
  <tr>
    <td>
    <div class="fieldWrapper">
    <label class="mdl-typography--body-2" for="hazard">
      Hazard
      <select class="mdl-typography--body-1" id="hazard">
        <option selected value="">Select Hazard</option>
        <option value="1">1</option>
        <option value="2">2</option>
      </select>
    </label>
  </div>
    </td>
  </tr>
  <tr>
    <td><label class="label_risk_checkbox_items mdl-typography--body-2" for="risk_checkbox_items">Risk</label></td>
    <td colspan="2">
    <fieldset class="entrylist">
         <ul>
         <li>
         <label id="label_riskcb1" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb1">
            <input type="checkbox" id="input_riskcb1" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Hearing disability</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb2" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb2">
            <input type="checkbox" id="input_riskcb2" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Partially deaf</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb3" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb3">
            <input type="checkbox" id="input_riskcb3" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Totally deaf</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb4" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb4">
            <input type="checkbox" id="input_riskcb4" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Raynaud's finger, white syndrome</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb5" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb5">
            <input type="checkbox" id="input_riskcb5" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Injuries, trauma</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb6" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb6">
            <input type="checkbox" id="input_riskcb6" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Shock</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb7" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb7">
            <input type="checkbox" id="input_riskcb7" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Death</span>
         </label>
         </li>
         <li>
         <label id="label_riskcb8" class="mdl-checkbox mdl-js-checkbox" for="input_riskcb8">
            <input type="checkbox" id="input_riskcb8" name="risk_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Property damage</span>
         </label>
         </li>
         </ul>
         </fieldset>

    </td>
  </tr>
  <tr>
    <td><label class="label_control_checkbox_items mdl-typography--body-2" for="control_checkbox_items">Control</label></td>
    <td colspan="2">
    <fieldset class="entrylist">
    <ul>
         <li>
         <label id="label_controlcb1" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb1">
            <input type="checkbox" id="input_controlcb1" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Inspection and maintenance of electrical facilities</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb2" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb2">
            <input type="checkbox" id="input_controlcb2" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Protective installations</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb3" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb3">
            <input type="checkbox" id="input_controlcb3" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Assured equipment grounding conductor program</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb4" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb4">
            <input type="checkbox" id="input_controlcb4" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Interrupters</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb5" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb5">
            <input type="checkbox" id="input_controlcb5" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Safe work practices</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb6" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb6">
            <input type="checkbox" id="input_controlcb6" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Altering techniques</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb7" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb7">
            <input type="checkbox" id="input_controlcb7" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">Fire prevention</span>
         </label>
         </li>
         <li>
         <label id="label_controlcb8" class="mdl-checkbox mdl-js-checkbox" for="input_controlcb8">
            <input type="checkbox" id="input_controlcb8" name="control_checkbox_item" class="mdl-checkbox__input">
            <span class="mdl-checkbox__label">PPE</span>
         </label>
         </li>
         </ul>
         </fieldset>
    </td>
  </tr>
  </tbody>
</table>
<div id="addDelButtons">
  <input style="width:12em" type="button" id="btnAddActivity" value="Add Activity" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--primary">
<input style="width:12em" type="button" id="btnDelActivity" value="Remove Activity" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--primary">
</div>
</div>

</div>

jquery代码:

代码语言:javascript
复制
$(function () {
    $('#btnAddActivity').click(function () {
        var num     = $('.activitySection').length, 
            newNum  = new Number(num + 1),      
            newElem = $('#activityEntry' + num).clone(true,true).attr('id', 'activityEntry' + newNum).fadeIn('slow'); 


    // Activity - text
        newElem.find('.input_activity').attr('id', 'ID' + newNum + '_activity').attr('name', 'ID' + newNum + '_activity').val('').attr('class', 'input_activity mdl-textfield__input');
        newElem.find('.label_activity').attr('for', 'ID' + newNum + '_activity').attr('class','label_activity mdl-textfield__label');           

    //Risks - CheckBox
        newElem.find('.label_risk_checkbox_items').attr('for', 'ID' + newNum + '_risk_checkbox_items');
        newElem.find('#input_riskcb1').attr('id', 'ID' + newNum + '_input_riskcb1').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb2').attr('id', 'ID' + newNum + '_input_riskcb2').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb3').attr('id', 'ID' + newNum + '_input_riskcb3').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb4').attr('id', 'ID' + newNum + '_input_riskcb4').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb5').attr('id', 'ID' + newNum + '_input_riskcb5').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb6').attr('id', 'ID' + newNum + '_input_riskcb6').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb7').attr('id', 'ID' + newNum + '_input_riskcb7').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);
        newElem.find('#input_riskcb8').attr('id', 'ID' + newNum + '_input_riskcb8').attr('name', 'ID' + newNum + '_risk_checkbox_item').prop('checked', false);

        newElem.find('#label_riskcb1').attr('for', 'ID' + newNum + '_input_riskcb1').attr('id','ID' + newNum + '_label_riskcb1');
        newElem.find('#label_riskcb2').attr('for', 'ID' + newNum + '_input_riskcb2').attr('id','ID' + newNum + '_label_riskcb2');
        newElem.find('#label_riskcb3').attr('for', 'ID' + newNum + '_input_riskcb3').attr('id','ID' + newNum + '_label_riskcb3');
        newElem.find('#label_riskcb4').attr('for', 'ID' + newNum + '_input_riskcb4').attr('id','ID' + newNum + '_label_riskcb4');
        newElem.find('#label_riskcb5').attr('for', 'ID' + newNum + '_input_riskcb5').attr('id','ID' + newNum + '_label_riskcb5');
        newElem.find('#label_riskcb6').attr('for', 'ID' + newNum + '_input_riskcb6').attr('id','ID' + newNum + '_label_riskcb6');
        newElem.find('#label_riskcb7').attr('for', 'ID' + newNum + '_input_riskcb7').attr('id','ID' + newNum + '_label_riskcb7');
        newElem.find('#label_riskcb8').attr('for', 'ID' + newNum + '_input_riskcb8').attr('id','ID' + newNum + '_label_riskcb8');

        //Controls - Checkbox
        newElem.find('.label_control_checkboxitem').attr('for', 'ID' + newNum + '_controls_checkbox_items');
        newElem.find('.input_controlcb1').attr('id', 'ID' + newNum + '_input_controlcb1').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb2').attr('id', 'ID' + newNum + '_input_controlcb2').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb3').attr('id', 'ID' + newNum + '_input_controlcb3').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb4').attr('id', 'ID' + newNum + '_input_controlcb4').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb5').attr('id', 'ID' + newNum + '_input_controlcb5').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb6').attr('id', 'ID' + newNum + '_input_controlcb6').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb7').attr('id', 'ID' + newNum + '_input_controlcb7').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);
        newElem.find('.input_controlcb8').attr('id', 'ID' + newNum + '_input_controlcb8').attr('name', 'ID' + newNum + '_control_checkbox_item').val([]);

        newElem.find('#label_controlcb1').attr('for', 'ID' + newNum + '_input_controlcb1').attr('id','ID' + newNum + '_label_controlcb1');
        newElem.find('#label_controlcb2').attr('for', 'ID' + newNum + '_input_controlcb2').attr('id','ID' + newNum + '_label_controlcb2');
        newElem.find('#label_controlcb3').attr('for', 'ID' + newNum + '_input_controlcb3').attr('id','ID' + newNum + '_label_controlcb3');
        newElem.find('#label_controlcb4').attr('for', 'ID' + newNum + '_input_controlcb4').attr('id','ID' + newNum + '_label_controlcb4');
        newElem.find('#label_controlcb5').attr('for', 'ID' + newNum + '_input_controlcb5').attr('id','ID' + newNum + '_label_controlcb5');
        newElem.find('#label_controlcb6').attr('for', 'ID' + newNum + '_input_controlcb6').attr('id','ID' + newNum + '_label_controlcb6');
        newElem.find('#label_controlcb7').attr('for', 'ID' + newNum + '_input_controlcb7').attr('id','ID' + newNum + '_label_controlcb7');
        newElem.find('#label_controlcb8').attr('for', 'ID' + newNum + '_input_controlcb8').attr('id','ID' + newNum + '_label_controlcb8');

    // Enable the "remove" button. This only shows once you have a duplicated section.
        $('#btnDelActivity').attr('disabled', false);

    // Right now you can only add 4 sections, for a total of 5. Change '5' below to the max number of sections you want to allow.
        if (newNum == 5)
        $('#btnAddActivity').attr('disabled', true); // value here updates the text in the 'add' button when the limit is reached 

    // Insert the new element after the last "duplicatable" input field
        $('#activityEntry' + num).after(newElem);
        $('#ID' + newNum + '_activity').focus();

    $("div.activityEntry:last").focus();
    });

    $('#btnDelActivity').click(function () {
    // Confirmation dialog box. Works on all desktop browsers and iPhone.
        if (confirm("Are you sure you wish to remove this section? This cannot be undone."))
            {
                var num = $('.activitySection').length;
                // how many "duplicatable" input fields we currently have
                $('#activityEntry' + num).slideUp('slow', function () {$(this).remove();
                // if only one element remains, disable the "remove" button
                    if (num -1 === 1)
                $('#btnDelActivity').attr('disabled', true);
                // enable the "add" button
                $('#btnAddActivity').attr('disabled', false).prop('value', "Add Activity");});
            }
        return false; // Removes the last section you added
    });


    // Enable the "add" button
    $('#btnAddActivity').attr('disabled', false);
    // Disable the "remove" button
    $('#btnDelActivity').attr('disabled', true);
});

您可以在此处查看演示和代码:http://codepen.io/monhammie/pen/mPVOzM

有人知道我会错过什么吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-08 13:44:07

我确实必须升级新元素,以便MDL(material design lite)的css/js能够在它们上工作。

特别是,需要更改的就是这个属性:

代码语言:javascript
复制
$(newElem).find(':not([data-upgraded=""])').attr('data-upgraded', '');

然后在附加克隆的元素后调用此函数:

代码语言:javascript
复制
$(newElem).show(200, function() {
    componentHandler.upgradeAllRegistered();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35857708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档