Tag: javascript events

.bind(’input’,function(){})在IE8中不起作用

我一直在使用.bind(‘input’)与jQuery,因为它似乎是检测它们是否复制/粘贴到框中的最佳解决方案,或者只是键入然后从浏览器中选择下拉菜单。 我对其他人的问题,比如change() ,至少在我看来,它们只会在用户对盒子的焦点丢失时触发。 我的问题是.bind(‘input’)在IE8中对我不起作用,但在FF4 / 5中有效。 我已经尝试过寻找替代方案但是已经出现了问题。 有什么建议吗?

事件传播,叠加和拖放事件

当用户将文件拖到窗口上时,我想在视口上叠加div。 但是,我在事件传播方面遇到了麻烦。 当我将叠加设置为display: block它似乎触发了一个dragleave事件,然后是另一个dragenter ,然后是另一个dragleave ,所以它总是处于后拖拉状态。 当然我在事件对象上调用e.stopPropagation()和e.preventDefault() ,但它似乎没有什么区别。 在窗口上拖动某些内容时,console.log()输出: dragenter dragenter dragleave dragenter dragleave css。 #overlay默认设置为display: none ,但会显示body是否包含dragenter类: body { position: absolute; height: auto; top: 0; left: 0; right: 0; bottom: 0; margin: 0; padding: 0; } #overlay { position: absolute; height: auto; width: auto; top: 0; left: 0; right: 0; bottom: 0; background: url(bg.png) […]

使用jQuery获取有关事件源的信息

函数绑定到许多对象的事件。 其中一个对象触发事件,jQuery启动。如何找出谁在JavaScript函数中解雇了事件? 我已经尝试过使用function [name](event){}并在事件中进行戳,但我得到“’data’为null或者不是对象”。 这是我现在的代码: $(document).ready(function() { $(‘.opening’).bind(“click”, function(event) { //code to populate event.data since right now, the tags don’t hold the info…they will eventually with an XHTML custom namespace event.data.building = “Student Center”; event.data.room = “Pacific Ballroom A”; event.data.s_time = “9/15/2009 8:00”; event.data.e_time = “9/15/2009 10:00”; indicatePreferenceByClick(event); }); function indicatePreferenceByClick(event) { alert(“I got clicked […]

一个总是触发的“过渡”事件,只有一次

我需要一个特殊的transitionend like事件,在所有转换完成后触发一次,或者如果CSS中没有定义转换则立即触发。 这就是我到目前为止所得到的: (function($){ $.event.special.transitionsComplete = { setup: function(data, namespaces, eventHandle){ var queue = [], style = window.getComputedStyle(this, null), computedProps = style.getPropertyValue(‘transition-property’).split(‘, ‘), computedDurations = style.getPropertyValue(‘transition-duration’).split(‘, ‘), $node = $(this); // only count properties with duration higher than 0s for(var i = 0; i 0){ $node.on(‘webkitTransitionEnd.x transitionend.x’, function(e){ queue.splice(queue.indexOf(e.originalEvent.propertyName)); if(queue.length < 1) $node.trigger('transitionsComplete'); }); // […]

javascript和/或jQuery中的函数监听器

想知道是否有一种优雅的方式来监听javascript和/或jQuery中的函数。 而不是监听$(‘#mything’).click(function(){ //blah })我想听一下特定function何时被触发。 我不想编辑函数,因为它在我不想直接破解的库中。 我找到了这个: http : //plugins.jquery.com/project/jqConnect连接function。 但想知道更好的技术。

在JavaScript事件处理中,为什么“return false”或“event.preventDefault()”和“停止事件流”会有所不同?

据说当我们处理“click事件”时,返回false或调用event.preventDefault()会产生影响,其中 不同之处在于preventDefault只会阻止默认事件操作发生,即链接点击,表单提交等页面重定向,返回false也会阻止事件流。 这是否意味着,如果click事件已针对多个操作多次注册,请使用 $(‘#clickme’).click(function() { … }) return false会阻止其他处理程序运行吗? 我现在在Mac上,所以只能使用Firefox和Chrome而不是IE,它有不同的事件模型,并通过添加3个处理程序在FF和Chrome上进行测试,并且所有3个处理程序都没有停止运行…. 那么真正的区别是什么,或者,是否存在“阻止事件流动”的情况? 这与…有关 使用jQuery的animate(),如果点击的元素是“ ”,该函数应该仍然返回false? 和 e.preventDefault()之间的区别是什么? 并返回false?

有没有办法防止默认事件,然后用jQuery再次激活它?

基本上我有一个锚元素, link 点击后,我首先想要做一些事情,只有在完成后我才想把用户带到它链接到的页面。 就像是: $(‘a’).click(function(ev){ ev.preventDefault(); //do something here ev.refireDefault(); }); 有什么建议? 更新 我很抱歉! 我的FireFox决定缓存以前版本的JS,所以我尝试过的只是一个简单的CTRL + F5解决了这个问题。

Javascript点击和mousedown冲突

我有一个特定的场景,我使用click来插入一个div,然后在该div上进行mousedown拖动它。 我将click绑定到父容器,并将div本身绑定到div上。 但是,当我在div上进行moused时,它也会触发父对象的点击,因此插入多个div而不是拖动已经添加的div! 有没有办法解决这个问题? 我无法取消绑定click ,因为我需要使用click添加2个div,然后在这些上绑定mousedown 。 更新:我正在使用selector.on(event, handler)类型的绑定。

你如何监听在JavaScript中移动的HTML元素?

我有一个HTML元素,我需要跟踪另一个元素。 具体来说,我需要让两个元素的左上角和右上角定位相同。 调整窗口大小时,会触发resize事件,我可以调整依赖元素的位置。 但是,如果被跟踪的元素被重新定位(但没有resize),我看不到任何DOM事件。 我们怎样才能知道DOM元素是否被移动了? 我们正在使用最新的jQuery。 这是一个代码示例。 请注意, elementOne和mouseTracking div用于显示因某些原因而移动的元素,这些因素超出了我的代码控制范围。 此代码适用于elementOne案例。 MouseTrackingTracker不跟踪移动元素。 ResizerTracker不会在溢出的情况下在完整文本周围放置边框。 我希望trackingDivs移动和resize,无论跟踪元素的变化原因是什么。 此代码依赖于窗口大小调整是钩子事件。 当元素改变其尺寸时触发一些触发的事件更接近我的需要。 #elementOne { float : right;width : 200px; display:inline-block} #resizer { float : left; display:inline-block} .trackedDiv { width:50px; height:50px; background-color: blue } .trackingDiv { position:absolute; z-index: 1; border:3px green; border-style: solid;} $(function() { $( window ).bind(“resize”,function(){ $(“#elementOne”).trigger(“reposition”); $(“#mouseTracking”).trigger(“reposition”); $(“#resizer”).trigger(“reposition”); }); […]

以编程方式更改复选框不会触发更改事件

我在这里有以下代码: $(‘input[type=”checkbox”][id=”gridlines”]’).change(function () { alert(‘hello world’); }); $(‘#gridlines’).prop(‘checked’, true); 当我加载页面时,选中复选框,但不会提示“hello world” 但是,当我手动单击复选框时,会出现“hello world” 是什么赋予了?