【问题标题】:Jquery theme doesn't apply after appending new elements追加新元素后,Jquery 主题不适用
【发布时间】:2015-11-13 06:11:38
【问题描述】:

我在添加没有 jquery 主题的元素后遇到问题。我尝试手动应用主题,但仍然无法使用输入框和选择框。有什么方法可以解决这个问题,或者我如何编写如何附加元素的代码是错误的。删除按钮的代码也不起作用

这是我的 javascript 代码:-

 $(window).on('pageinit', function() {
 $(document).ready(function(){
    $("#Sadd").click(function() {
	var tDiv = $('#GPA1');
    var i = $('#GPA1 h1').size() + 1;
	$('<li class="ui-li-static ui-body-inherit" style="border:none"><h1>Module ' + i +':</h1></li><li class="ui-field-contain ui-li-static ui-body-inherit" data-role="fieldcontain" style="border:none"><label for="Sc' + i +'">Credits:</label><input type="number" step="0.01" id="Sc' + i +'" name="Sc' + i +'" data-clear-btn="true"></li><li class="ui-field-contain ui-li-static ui-body-inherit ui-last-child" data-role="fieldcontain" style="border:none"><label for="Sgrade' + i +'" class="select">Grade:</label><select class="Sgrade' + i +'" data-theme="f" id="Sgrade' + i +'"><option value="-1">—</option><option value="4">A</option><option value="3.7">A-</option><option value="3.3">B+</option><option value="3">B</option><option value="2.7">B-</option><option value="2.3">C+</option><option value="2">C</option><option value="1.7">C-</option><option value="1.3">D+</option><option value="1">D</option><option value="0">F</option></select></li>').appendTo(tDiv);
	 i++;
     return false;
	 });
 $("#Sremove").click(function() {
	 var i = $("#GPA1 h1").length();
                if( i > 5 ) {
                        $(this).parents('h1').remove();
                        i--;
                }
                return false;
				
				
  });			
  });
});

这是我添加新元素时发生的情况的图片:-

这是我的 html 和 javascript 的演示,只需单击添加按钮,您就会看到结果

http://jsfiddle.net/tny5mh2n/

【问题讨论】:

标签: javascript jquery html css jquery-mobile


【解决方案1】:

div 标签有问题,您没有在其中添加 div 标签 即使我在http://jsfiddle.net/tny5mh2n/2/ 中更新了,也尝试用这个替换

$('<li class="ui-li-static ui-body-inherit" style="border:none"><h1>Module ' + i +':</h1></li><li class="ui-field-contain ui-li-static ui-body-inherit" data-role="fieldcontain" style="border:none"><label for="Sc' + i +'">Credits:</label><div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear"><input type="number" step="0.01" id="Sc' + i +'" name="Sc' + i +'" data-clear-btn="true"><a href="#" class="ui-input-clear ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all ui-input-clear-hidden" title="Clear text">Clear text</a></div></li><li class="ui-field-contain ui-li-static ui-body-inherit ui-last-child" data-role="fieldcontain" style="border:none"><label for="Sgrade' + i +'" class="select">Grade:</label><div class="ui-select"><div class="ui-btn ui-icon-carat-d ui-btn-icon-right ui-btn-f ui-corner-all ui-shadow" id="Sgrade5-button"><span class="Sgrade5">—</span><select class="Sgrade' + i +'" data-theme="f" id="Sgrade' + i +'"><option value="-1">—</option><option value="4">A</option><option value="3.7">A-</option><option value="3.3">B+</option><option value="3">B</option><option value="2.7">B-</option><option value="2.3">C+</option><option value="2">C</option><option value="1.7">C-</option><option value="1.3">D+</option><option value="1">D</option><option value="0">F</option></select></div></div></li>').appendTo(tDiv);

【讨论】:

  • .trigger("create");解决了问题也感谢分享
【解决方案2】:

虽然我看不到 html。但我之前也遇到过同样的问题。首先,您应该使用 $.on 而不是 $.click.and 其次,当您动态添加元素时,您应该从他们的父母那里获取您的子动态元素。动态创建它们后,您无法直接通过它们的类或 id 获取它们

【讨论】:

  • 这里是jsfiddle.net/tny5mh2n $.click 工作正常,我可以添加元素。问题已解决,但我无法找到删除它们的方法
  • 我希望用户能够删除将要附加的模块,并且不应该删除从 1 到 5 的模块
  • 好吧,我已经看过你的代码了。如果我要做那项工作,我就不会那样做代码。现在我可以为您找到解决方案。首先将每一个集合封装成一个div,给每个div一个动态的id和一个通用的class。当你删除它们时。遍历那个公共类并删除最后一个。这是一个非常简单的解决方案。
  • 好吧,我不确定我是否做对了,这里是更新的小提琴jsfiddle.net/tny5mh2n/9,现在的问题是从 21 开始添加模块,然后添加到前一个模块,这包括 id选择框和输入框。对于删除,你能给我我应该应用的循环样本吗?
  • 我按照你的建议解决了问题,但我没有使用循环,因为我希望用户一个一个删除添加的模块,我用 if 语句再次感谢你让我很开心。
猜你喜欢
  • 2018-09-11
  • 2019-06-27
  • 2012-03-05
  • 2014-04-17
  • 2022-11-21
  • 2014-07-06
  • 2016-03-18
  • 2011-03-09
  • 1970-01-01
相关资源
最近更新 更多