标签: javascript-events

JQuery UI; 停止可选事件的传播

基本上我在a上使用jQuery ui的可选功能ul,但是ul经常会有一个滚动条,而且这个滚动条在Webkit浏览器中变得无法使用,因为当你试图点击它来抓取它时,可选功能的套索会被拉到顶层代替.

我已经制定了一个解决方案,其中包括检查光标相对于ul的位置和宽度的位置,以查看光标是否在滚动条上方,如果是,则停止传播可选择的"start"事件,但尽管如此应该满足有条件的时候,既不返回false也不停止事件的进程似乎阻止了jquery在可选事件中前进.

以下是我对jquery .selectable start事件的看法:

start: function(event, ui) {
    var t = event.target;
    var cutoff  = t.scrollWidth + t.offsetLeft
    if (event.clientX > cutoff)
    {
        console.log('NO!');
        console.log(event.type);

        //overkill
        event.stopPropagation();
        event.stopImmediatePropagation();

        if (event.stopPropagation) {
          event.stopPropagation();
        } else {
          event.cancelBubble = true;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

所有建议/解决方案表示赞赏,谢谢

javascript jquery jquery-ui javascript-events selectable

9
推荐指数
1
解决办法
1万
查看次数

如何跟踪Javascript事件(堆栈跟踪)?

在任何编程语言中,我都可以跟踪任何函数并知道其他函数调用了哪个函数.但是在Javascript中,我不知道如何,因为代码不是由我编写的,而且Firebug没有提供此功能 - 据我所知.

一个例子 :

我想显示单击XYZ元素时调用的每个函数的函数名称,并按顺序显示它们.

谢谢.

javascript javascript-events

9
推荐指数
1
解决办法
2万
查看次数

将多个键绑定到Keypress事件

我目前正在使用此Javascript kepypress代码在按键时触发事件:

$(document).keydown(function(e) {
    switch(e.keyCode) {

    case 39:
        e.preventDefault();
        alert("Arrow Key");
        break;

    case 37:
        e.preventDefault();
        alert("Arrow Key");
    }
});
Run Code Online (Sandbox Code Playgroud)

但我想知道的是,如果我可以而不是绑定一个键绑定两个键的组合.我可以这样做:

$(document).keydown(function(e) {
    switch(e.keyCode) { 
        case 39 && 37:
            e.preventDefault();
            alert("Arrow Key");
        break;
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery event-handling javascript-events

9
推荐指数
1
解决办法
2万
查看次数

当用户点击该元素外部时,您如何避免失去对可信元素的关注?

如果在该区域外单击,我想阻止contentEditable区域失去焦点.一些示例HTML如下所示:

<div id="content">
    <p>Hello</p>
</div>
<div id="clickThis">
    <p>If you click on this or anywhere for that matter after focusing on Hello, you lose your focus on Hello</p>
</div>
Run Code Online (Sandbox Code Playgroud)

示例javascript如下所示:

$(document).ready(function()
{
    $('#content')[0].contentEditable=true;

    $('#clickThis').bind('click',function(e)
    {
        console.log(window.getSelection().getRangeAt(0).startContainer);
        e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)

当你点击#clickThisdiv或div之外的任何地方时#content,#content即使你调用click事件的preventDefault函数,你也会失去对div的关注.

此外,范围会在click事件触发的那一刻发生变化,所以我不能在点击发生后返回上一个范围.有没有办法在点击发生后保持光标位置和焦点?

谢谢.

jsFiddle:http://jsfiddle.net/VivekVish/FKDhe/4/

javascript javascript-events contenteditable

9
推荐指数
1
解决办法
1万
查看次数

点击事件不在jquery中的div上工作

我正在使用以下代码

<div class="business-bottom-content" onMouseOver="javascript:this.className='business-bottom-    content-hover';"  onMouseOut="javascript:this.className='business-bottom-content';"> 
Run Code Online (Sandbox Code Playgroud)

jquery脚本如下

 $("div.business-bottom-content").click(
 function()
  {
   alert('ashutosh mishra');
  });
Run Code Online (Sandbox Code Playgroud)

jquery javascript-events

9
推荐指数
1
解决办法
2万
查看次数

javascript文本选择事件

这不仅适用于谷歌浏览器扩展程序,也适用于javascript

我正在编写一个chrome扩展,其中当文本突出显示并显示上下文菜单时,我在上下文菜单中显示我的项目,单击该菜单时应处理所选文本

在调出上下文菜单并选择我的选项后,我得到所有值为零和空值的空对象

所以我想实现一些机制,一旦用户在选择文本后释放鼠标就会缓冲文本选择,以便事件可以触发,如果有任何事情发生,我可以在全局变量中复制所选文本可以稍后处理

当我使用单独的测试代码进行测试时,window.getSelected()工作正常,但在使用我的扩展程序时,我调出了上下文菜单,我无法获得实际选中的文本

我在文档中看到的所选文本将是文本和HTML

建议请...


在这里,我粘贴了我正在做的事情.当我点击保存到单词提醒时,我得到一个空字符串

在此输入图像描述

这是代码的其余部分


<script>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {


    switch(request.message)
    {
        case 'getSelection':
            sendResponse({data: window.getSelection().toString()});
        break;

        case 'createMenu':
            seecon();
            break;

        default:
            sendResponse({data: 'Invalid arguments'});
        break;
    }
});

function conOnClick(info,tab)
{

/*
    chrome.extension.sendRequest(tab.id, {method: 'getSelection'}, function(response){
        alert(response.data);
    });
*/  
}


//function seecon()
{
var contexts = ["selection"];
for (var i = 0; i < contexts.length; i++) {
  var context = contexts[i];
  var title = "Save to Word Reminder";
  var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                       "onclick": conOnClick}); …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events google-chrome-extension

9
推荐指数
1
解决办法
3696
查看次数

JQuery:空输入框onclick

我不知道为什么这不起作用,但我确定这是一个非常常见的javascript.我的语法显然缺乏,我不知道为什么:

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val() = '';} return false;" />
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript jquery onclick javascript-events

9
推荐指数
1
解决办法
5万
查看次数

用javascript显示鼠标x和y位置

第一个版本没有向我显示x和y并得到以下错误:Uncaught TypeError: Cannot read property 'pageX' of undefined第二个版本工作但编码非常相似,找不到问题.

第一版(不工作)

    <form name ="show">
        <input type="text" name="mouseXField" value="0" size="6">Mouse X Position<br>
        <input type="text" name="mouseYField" value="0" size="6">Mouse Y Position<br>
    </form>

        <script type="text/javascript">

        var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;

        if (!mie) {

            document.captureEvents(Event.MOUSEMOVE);
            document.captureEvents(Event.MOUSEDOWN);
        }


        document.onmousemove = mousePos();
        document.onmousedown = mouseClicked();

        var mouseClick;
        var keyClicked;

        var mouseX = 0;
        var mouseY = 0;

        function mousePos (e) {

            if (!mie) {
                mouseX = e.pageX; 
                mouseY = e.pageY; …
Run Code Online (Sandbox Code Playgroud)

onmousemove javascript-events

9
推荐指数
1
解决办法
5万
查看次数

事件和DOM元素

假设我有一个带有两列布局的页面,其中左列是一组链接,并且当单击该链接时,它会在右列中加载关联的html页面/模板.

在加载模板时,有一个模板处理程序,它通过requirejs初始化为单例,并定义了一些方法和处理程序,如:

SomePage.prototype.saveHandler: function(e) { ... }; // Page handler has a handler

SomePage.prototype.initialize: function() {
    $('#btnSave').on('click', saveHandler);
}
Run Code Online (Sandbox Code Playgroud)

然后,每次页面加载时,我都会通过初始化方法附加DOM事件.

SomePage.initialize(); // This attaches the click event
Run Code Online (Sandbox Code Playgroud)

现在,当我单击左侧的另一个链接时,将加载另一个模板页面,并为该页面重复上述过程.

我想知道之前附加到btnSave元素的click事件会发生什么?它现在是jQuery缓存中的悬空事件处理程序吗?

如果我再次加载同一页面时尝试删除它,它会实际删除原始事件吗?

$('#btnSave').off('click', saveHandler);
Run Code Online (Sandbox Code Playgroud)

执行以下块是否可以防止内存泄漏/悬空引用?

// The potential problem here is that btnSave is part of the newly loaded template 
// and not the element i attached the handler to earlier (which doesn't exist anymore)
$('#btnSave').off('click', saveHandler);

$('#btnSave').on('click', saveHandler); 
Run Code Online (Sandbox Code Playgroud)

什么是确保我最终没有悬挂引用和内存泄漏的最佳方法.这也是普通javascript的一个潜在问题.我的理解是,刷新模板页面时上述操作无效.我在同时试验它,但是知道专家如何处理它会很好.谢谢!

javascript jquery javascript-events

9
推荐指数
1
解决办法
231
查看次数

如何在下拉列表中以相同的值触发jQuery更改事件

即使用户选择相同的值,如何每次都触发jQuery更改事件?我需要一个刷新效果,例如,如果用户选择律师并且它hello再次提醒用户从下拉列表中选择律师,它应该提醒hello.我怎样才能实现它?以下是代码.

jQuery的

function filterPullDown () {
    alert('hello');
}
$(".businessTypePullDown").change(filterPullDown);
Run Code Online (Sandbox Code Playgroud)

HTML

<select class="businessTypePullDown">
    <option value="" disabled selected>Business Type</option>
    <option value="1">General</option>
    <option value="2">Lawyer</option>
    <option value="3">Software Development</option>
    <option value="4">Auto-repair</option>
</select>
Run Code Online (Sandbox Code Playgroud)

链接到小提琴

html javascript jquery javascript-events

9
推荐指数
1
解决办法
1万
查看次数