js文件中脚本的一部分在Firebug控制台上正常工作,但在页面中不起作用
A part of script in js file worked correctly with firebug console but not worked in page
我真的很困惑,我有一个包含很多脚本的js文件,它们都正常工作,我只是添加了新行:
$('.RemoveE').click(function () {
alert('yap');
});
但这不起作用,我用Firebug对其进行了测试,一切都很好,我也尝试了另一个也不起作用的浏览器,我必须提到我通过脚本="ReomoveE button red"
使用CSS类添加新按钮,这是我js的一部分包括新行和添加按钮:
// <reference path="../jquery-1.7.1.js" />
$(document).ready(function() {
$('.RemoveE').click(function() {
alert('yap');
});
//Add new Addable div
$('.AddNewE').click(function() {
var Target = $('.Addable:first');
var TargetId = $(Target).attr('id');
var Count = $('.Addable#' + TargetId).size();
var CloneTarget = $(Target).clone();
CloneTarget.find('input').val('');
CloneTarget.insertAfter('.Addable:last');
var TargetName = $(Target).find('input').attr('name');
var CloneName = TargetName + '[1]';
TargetName = TargetName + '[0]';
$(Target).find('input').attr('name', TargetName);
$(Target).find('span[class*="field-validation"]').attr('data-valmsg-for', TargetName);
$(CloneTarget).find('input').attr('name', CloneName);
$(CloneTarget).append($('<input type="button" class="RemoveE button red" value="remove" />'));
(function($) {
$.fn.updateValidation = function() {
var form = this.closest("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
return this;
};
})(jQuery);
$(Target).updateValidation();
$(CloneTarget).updateValidation();
});
...
});
那你怎么看?问题出在哪里,为什么所有功能都正常工作,但这个新功能没有?
您在元素存在之前添加了处理程序:
$('.RemoveE').click(function() {
alert('yap');
});
//then later
$(CloneTarget).append($('<input type="button" class="RemoveE button red" value="remove" />'));
尝试:
在创建时添加处理程序:
var newInput = $('<input type="button" class="RemoveE button red" value="remove" />')
newInput.click(function(){
alert('yap');
});
$(CloneTarget).append(newInput)
或on()
委派
$(parent_of_RemoveE).on('click','.RemoveE',function() {
alert('yap');
});
您需要
使用.on()
或.delegate()
,以便它可以收听您动态创建的任何新按钮
请参阅此处的示例代码
.HTML
<div id='test'></div>
简讯
$(document).ready(function() {
$('#test').on('click','.removeE', function() {
alert('yap');
});
$('#test').append('<input type="button" class="removeE" value="test"/>');
});
您可以在此处查看示例
@Joseph基本上说了什么。我注释了您的代码位以指出一些值得注意的事情。
$(document).ready(function () {
$('.RemoveE').click(function () {
alert('yap');
});
//Add new Addable div
$('.AddNewE').click(function () {
var Target = $('.Addable:first');
var TargetId = $(Target).attr('id'); // Double wrapping in jQuery
// ID are unique, selector makes little sense,
// and `length` is preferable to `size()`
var Count = $('.Addable#' + TargetId).size();
var CloneTarget = $(Target).clone(); // Double wrapping in jQuery
CloneTarget.find('input').val('');
CloneTarget.insertAfter('.Addable:last');
var TargetName = $(Target).find('input').attr('name'); // Double wrapping in jQuery
// This seems a bit verbose...
var CloneName = TargetName + '[1]';
TargetName = TargetName + '[0]';
$(Target).find('input').attr('name', TargetName); // Double wrapping in jQuery
$(Target).find('span[class*="field-validation"]').attr('data-valmsg-for', TargetName); // Double wrapping in jQuery
$(CloneTarget).find('input').attr('name', CloneName); // Double wrapping in jQuery
$(CloneTarget).append($('<input type="button" class="RemoveE button red" value="remove" />')); // Double wrapping in jQuery
// end verbosity
(function ($) {
$.fn.updateValidation = function () {
// Don't need to chain `removeData()` twice,
// as of jQuery 1.7 you can pass a list
var form = this.closest("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
return this;
};
})(jQuery);
$(Target).updateValidation(); // Double wrapping in jQuery
$(CloneTarget).updateValidation(); // Double wrapping in jQuery
});
});
相关文章:
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- Windows.Open 在 window.Location 工作时不起作用
- 带有向下钻取的 Amchart 图表工作正常,但“后退”按钮不起作用
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- .split() 数据属性在应该工作的时候不起作用
- jQuery选择器在脚本中不起作用,但在控制台中工作
- 在键上验证正在工作,但在按键时它不起作用
- addEventListener 在 Javascript 中不起作用,但 jQuery Click 正在工作
- 表单验证在 HTML 中工作的 Visualforce 中不起作用
- 代码在jsfiddle中工作,但在本地服务器中不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 为什么我的左拖动/滑块工作,但右拖动/滑块不起作用
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- jQuery SlideToggle() 在 FireFox 中不起作用,在 Chrome 中工作
- Ajax load在chrome中不起作用,而在Fire fox中工作
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- EventSource onmessage()在onopen()和oneror()正常工作的地方不起作用
- 如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用