我很好奇为什么当我.live()用.on()我的事件替换后,通过html()方法插入AJAX的响应后不起作用.假设我有html结构:
<div class="a">
<a href="" class="alert-link">alert</a>
<a href="" class="ajax-update">update</a>
</div>
Run Code Online (Sandbox Code Playgroud)
和jquery代码类似:
$('.alert-link').on("click", function(){
alert('abc');
return false;
});
Run Code Online (Sandbox Code Playgroud)
和ajax-update将触发请求,响应将是
警报更新
我会插入它parent().然后再次按下alert-link将导致重定向到/但如果我改为.on(),.live()那么将再次显示警报.我在这里错过了什么?我已经读到这.on()是替换.delegate()和.live().
我在各个地方搜索了这个问题,但他们提到的只是使用了javascript window.unload&window.onbeforeunload.此外,它在大多数情况下都不能用于Chrome,因为它被阻止了.
然后谷歌如何设法做到这一点.如果我们正在撰写邮件并错误地关闭标签,谷歌会提示我们"你确定吗?" 框.
有人可以帮帮我吗?
实际上我想要做的是询问用户,当他填写表格并错误地点击标签关闭时.如果是的话,我允许他导航离开他留在页面上并继续填写他的表格.
我试图在脚本修改input元素(文本字段)时触发事件处理程序.在Internet Explorer上,我可以使用该onpropertychange事件,但在Firefox和其他浏览器上没有此类事件.因此,根据W3C文档,似乎DOMAttrModified事件完全符合我的要求.但它没有开火Firefox 11.
这是一个简单的代码片段,可以重现问题.我有一个输入文本字段,以及一个将字符添加到value输入文本字段的属性的按钮.单击该add char按钮应该导致DOMAttrModified事件触发:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function addChar() {
var q = document.getElementById("query");
q.value += "X";
}
function loadevents() {
var q = document.getElementById("query");
q.addEventListener("DOMAttrModified", function() {alert("DOMAttrModified event!");
}, false);
}
</script>
</head>
<body onLoad="loadevents()">
<input type="text" id="query">
<br>
<input type="submit" value="add char" onclick="addChar()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.知道我做错了什么吗?(我知道DOM Level 3 不赞成这个事件,但现在似乎没有可行的替代方案.据我所知,Firefox 11仍然支持它.)
我正在尝试执行在使用javascript代码的网页上执行事件(例如onClick事件)时调用的javascript函数.我从这样的事件中获取函数:
var attributval = document.getElementsByTagName("a").getAttribute('onClick');
Run Code Online (Sandbox Code Playgroud)
我试图执行这个对象(实际上是一个javascript函数)作为一个函数(假设我们在这个例子中,我试过:
var attributval = document.getElementsByTagName("a").getAttribute('onClick');
attributval() = function(){attributval};
attributval();
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我已禁用iPad上的滚动:
function disableScrolling() {
document.ontouchmove = function(e){
e.preventDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法再次启用它?
它在以下功能中特别有用:
function enableScrolling() {
// enable scrolling
}
Run Code Online (Sandbox Code Playgroud) 我有以下java脚本将用户重定向到另一个网站(在本例中为谷歌).
<script type="text/JavaScript">
window.setTimeout("location=('http://www.google.com');",5000);
</script>
Run Code Online (Sandbox Code Playgroud)
但是,虽然我希望网站重定向到另一个网站,我不希望它无缘无故地重定向.我的目标是在光标未移动一段时间的情况下自动重定向网站.
这可能吗?
我使用JQuery的live()向特定元素添加了一个click事件:
$('#foo').live('click');
Run Code Online (Sandbox Code Playgroud)
后来,我将bind()添加到文档中:
$(document).bind('click');
Run Code Online (Sandbox Code Playgroud)
单击文档后,我取消绑定文档单击
$(document).unbind('click');
Run Code Online (Sandbox Code Playgroud)
这导致了问题:我的#foo元素不再有click事件,因为它是文档的子元素.如何删除文档的单击,保持#foo元素不变?
这是演示:http: //jsfiddle.net/zS2Mt/2/
我正在使用Ajax/Request将元素加载到div容器中.默认情况下我隐藏了一个输入框.如果用户单击该div上的编辑图标,我想显示输入框.这是我的代码:
HTML代码
<div class='container'>
<input type = 'text' onkeydown='saveFn(event,this)' name = 'editemail' class = 'editemail' style='display:none; height:20px;' />
</div>
Run Code Online (Sandbox Code Playgroud)
JS代码
$(".container").click(function(){
console.log($(this).find(".editemail").show()); //Note it works fine If i didn't load any new elements into the div.
});
Run Code Online (Sandbox Code Playgroud)
控制台日志输出在将新元素加载到容器之前.
<input type="text" onkeydown="saveFn(event,this)" name="editemail" class="editemail" style="height: 20px; " value="hyther@zohocorp.com" title="press enter to save">
Run Code Online (Sandbox Code Playgroud)
将元素加载到容器后的控制台日志输出.
<input type="text" onkeydown="saveFn(event,this)" name="editemail" class="editemail" style="height: 20px; display: none; " value="saravanan@zohocorp.com" title="press enter to save">
Run Code Online (Sandbox Code Playgroud)
尽管我也试图从这个元素中删除"style"属性并添加一个新的样式元素,但它仍然无效.
我想在div从点击处理程序调用Ajax更新时显示一个用作加载屏幕,该处理程序可能需要一两秒钟,例如:
var loadingControl;
loadingControl = $("#loading"); // Is initialized after DOM Ready
$('#updateLink').click(function (e) {
loadingControl.show();
$.ajax(
{
url: 'http://some.url',
type: "POST",
success: function (data) {
$('#divToUpdate').html(data);
},
error: handleAjaxError
});
loadingControl.hide();
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
该loadingDIV不显示.我怀疑这是因为DOM在click处理程序完成之前不会更新.那是对的吗?
如何重新构造此代码以允许DOM在调用后更新.show(),以便加载屏幕div在.ajax运行时可见?
我正在学习Javascript,在这个过程中,我发现Javscript中不允许某些操作,这在一般编程中很常见.例如,由于明显的安全原因,无法在Javascript中控制用户的鼠标指针,请参阅移动鼠标光标Javascript.
我想知道更多这样的事件,可用于控制用户输入,但在Javascript中是不可能的.