相关疑难解决方法(0)

使用jQuery的Javascript:单击并双击相同的元素,不同的效果,一个禁用另一个

我有一个有趣的情况 - 我有一个表行,当前,当我点击"展开"按钮时,它显示它是隐藏的对应物.包含展开按钮的原始(未隐藏)行也包含某个单元格中的某些内容,单击该单元格后,该内容将变为可编辑状态.我想摆脱展开按钮,并通过双击行本身的任何位置来启用行的扩展,包括单击它时变为可编辑的字段.你可以在这里闻到麻烦.

当我双击一行时,在dblclick发生之前首先触发两个单击事件.这意味着如果我双击该字段,它将变为可编辑的字段,并且该行将展开.我想阻止这个.我希望双击以防止单击的触发,并且单击以执行常规操作.

使用event.stopPropagation()显然不会起作用,因为它们是两个不同的事件.

有任何想法吗?

编辑(一些半伪代码):

原始版本:

<table>
    <tbody>
        <tr>
            <td><a href="javascript:$('#row_to_expand').toggle();" title="Expand the hidden row">Expand Row</a></td>
            <td>Some kind of random data</td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third editable value") ?></td>
            <!-- ... -->
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[n]->value("Nth editable value") ?></td>
        </tr>
        <tr style="display: none" id="row_to_expand">
            <td colspan="n">Some hidden data</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

期望的版本:

<table>
    <tbody>
        <tr ondblclick="$('#row_to_expand').toggle()">
            <td>Some kind of random data</td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
            <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third …
Run Code Online (Sandbox Code Playgroud)

javascript jquery events event-bubbling propagation

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

使用AngularJS处理相同元素的ng-click和ng-dblclick

我正在寻找使用AngularJS的单击和双击事件处理,因为即使为我们的元素设置了ng-dblclick指令,AngularJS也总是仅触发ng-click事件.

以下是寻求解决方案的人的一些工作代码:

JS:

function MyController($scope) {

    var waitingForSecondClick = false;
    $scope.singleClickAction = function() {

        executingDoubleClick = false;
        if (waitingForSecondClick) {
            waitingForSecondClick = false;
            executingDoubleClick = true;
            return $scope.doubleClickAction();
        }
        waitingForSecondClick = true;

        setTimeout(function() {
            waitingForSecondClick = false;
            return singleClickOnlyAction();
        }, 250); // delay

        /*
         * Code executed with single AND double-click goes here.
         * ...
         */

        var singleClickOnlyAction = function() {
            if (executingDoubleClick) return;

            /*
             * Code executed ONLY with single-click goes here.
             * ...
             */

        }

    }

    $scope.doubleClickAction = …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive angularjs-ng-click

38
推荐指数
3
解决办法
5万
查看次数

knockoutjs单击和双击

我希望能够将单击和双击事件绑定到一个文本范围.我知道我可以使用

data-bind ="event: { dblclick: doSomething }
Run Code Online (Sandbox Code Playgroud)

双击,但我还需要能够单击执行不同的功能.有什么建议?

jquery knockout.js

15
推荐指数
4
解决办法
2万
查看次数

如何在jquery中右键单击添加dbclick()

嗨我想在右键单击上有一个dblclick(),因为谷歌地图必须放大和缩小.有没有办法做到这一点.我已经编写了dblclick但现在它只使用左键单击.有关如何执行此操作的任何指示.这是我的代码

         $("div#demo1").dblclick(function(e) {
            //alert(e.getElementById());

            if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) {
                alert("Left Mouse Button was clicked on demo1 div!");
                $("div.window").animate({
                'height':'+=20', 'width':'+=20'
                },0,function(){
                    jsPlumb.repaintEverything();
                    jsPlumb.repaintEverything();
                });
                // Left mouse button was clicked (all browsers)
            }
            else if( (!$.browser.msie && e.button == 2) || ($.browser.msie && e.button == 3) ) {
                alert("right click double");
            }
        }); 
Run Code Online (Sandbox Code Playgroud)

javascript jquery

8
推荐指数
2
解决办法
4835
查看次数

如何使用jQuery来处理click,dblclick分离中的计时器

我在http://abeautifulsite.net/notebook/58上使用jQueryFileTree,我想区分dblclick 和click事件,因为点击总是由dblclick触发.

谷歌搜索引发了一种技术,其中点击由计时器处理,当dblclick不取消它时启动.

有没有什么方法可以用jQuery和jQuery示例以优雅的方式使用?

jquery timer click double-click

6
推荐指数
1
解决办法
8814
查看次数

在doubleclick上满足

我有一个p带有一些文字的标签,而我正试图制作它,contenteditable但只是双击.当我点击它时,如何防止浏览器将光标放在p上,只有在我双击时才这样做?JQuery的:

    p.dblclick(function(e){
        p.css("cursor", "text");
    })
    .focusout(function(){
        p.css("cursor", "default");
    })
    .click(function(e){
        console.log('focus p');
        e.stopPropagation();
        $("body").focus(); // not stopping Chrome from placing cursor
    });
Run Code Online (Sandbox Code Playgroud)

我可以在contenteditable默认情况下使其成为假,然后将其设为true dbleclick然后执行,p.focus()但这意味着我无法将光标放在我单击的位置.另一方面,我可以在第一次点击后让它满足,然后等待1.5s for dobuleclick,如果没有发生取消它,但如果它发生了,那么内容将是可编辑的,第二次点击将触发将光标放在正确的位置.然而,它不是那么平滑,并且使这些内容可以在这些1秒半内编辑.

有任何想法吗?

回答:如果有人感兴趣,我继续实施计时器方法,因为我认为没有其他办法...这里是代码

var DELAY = 700, clicks = 0, timer = null;
p.focusout(function(){
    p.css("cursor", "default");
    p.prop("contenteditable", false);
})
.click(function(e){
    clicks++;
    p.prop("contenteditable", true);
    if(clicks == 1){
        timer = setTimeout(function() {
            p.prop("contenteditable", false);
            //alert("Single Click");  //perform single-click action
            clicks = 0;             //after action performed, reset counter
        }, …
Run Code Online (Sandbox Code Playgroud)

javascript jquery contenteditable

6
推荐指数
1
解决办法
7472
查看次数

双击 Chrome 输入字段中的文本选择

我在 HTML 中输入了带有数字文本的字段,其中有一个点,即“1.00.1”。如果我在 IE 或 firefox 中双击此字段,浏览器仅选择文本的一部分(点之间),但在 Chrome 中双击选择此字段中的整个文本。在 Chrome 中更改此行为的最佳方法是什么?如果我在输入字段中只有文本(即“test.test”),则在 Chrome 中双击并选择与 IE 和 Firefox 一样。 在此处输入图片说明

html javascript google-chrome

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

如何防止“click”事件在“dblclick”事件之前触发

我必须处理“click”和“dblclick”两个事件,但 click 事件始终在 dblclick 事件之前触发,并且不让 dblclick 事件执行。如何使事件正确执行“click”和“dblclick”

google.maps.event.addListener(map, 'dblclick', function(event) {
   polygon(map, event.latLng)
 });


 google.maps.event.addListener(map, 'click', function(event) {
   click_events(map, event.latLng)
 });
Run Code Online (Sandbox Code Playgroud)

javascript function dom-events ondblclick

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

如何在 jQuery 中更改元素文本、暂停和重置原始文本

HTML:

<a href="#" class="change">Old Text</a>
<a href="#" class="change">Old Text</a>
Run Code Online (Sandbox Code Playgroud)

我想用 jQuery 更改“文本”,延迟两秒钟并将其设置回原始状态。我试过超时和延迟失败。该页面有多个具有相同文本“添加到购物车”的项目,然后切换到“已添加”,然后再次返回。

jQuery:

$('.change').html('first').delay(2000).html('second')
Run Code Online (Sandbox Code Playgroud)

这失败了。它忽略第一个,直接跳到第二个

_x = $(this);
$(_x).html('New Text');
_t = setTimeout(function(){
    $(_x).html('Old Text');
},2000);
Run Code Online (Sandbox Code Playgroud)

如果用户在 2 秒重置之前单击并且没有触发另一个,则此方法有效。如果有人点击#1,然后在#1 重置文本之前点击#2,它适用于#2,但#1 上的文本保留在新文本中。

我认为因为它在一个函数内,所以超时将使用它自己的 _t 实例为每个对象实例化,但显然不是。

我不确定这是否重要,但有时会动态加载元素,并且相应地设置了单击绑定

$(element).on('click','.change',function(_e) { ...
Run Code Online (Sandbox Code Playgroud)

我该如何处理?先感谢您。

jquery timeout delay

4
推荐指数
1
解决办法
2963
查看次数