标签: javascript-events

使用 JS / Jquery 组合按键(Escape & Shift +Escape)

在 js/jquery 中有没有办法让这两种按键组合?

ESCape 键和 SHIFT + ESCape 键

当我使用它实现它时

    document.onkeydown = function(e){if (e == null) {keycode = event.keyCode;}
    else         {keycode = e.which;}
    if(keycode == 27){closeAll();}}

    //upon pressing shift + esc
    $(document).bind('keypress',function(event)
    {
          if(event.which === 27 && event.shiftKey)
        {
      closetogether();
       }

    });
Run Code Online (Sandbox Code Playgroud)

转义按钮工作正常,但我认为带有 shift + esc 的那个按钮很困惑,因为它什么都不做。不要担心,当我将组合键 27 更改为 90 (z) 时,该功能可以正常工作,例如它工作得很好。

有人可以选择我更好的方式吗?

javascript jquery javascript-events

3
推荐指数
1
解决办法
1329
查看次数

如果我将JavaScript事件绑定到一个元素,然后删除该元素,该事件会发生什么?

假设我有一个元素:

<section id="container">
    <div id="curious">hey, there</div>
</section>
Run Code Online (Sandbox Code Playgroud)

然后,在DOM加载之后,我将一个事件绑定到元素,如下所示:

$('#curious').click(function (){
  alert('Are you curious?');
});
Run Code Online (Sandbox Code Playgroud)

稍后,该元素将被删除:

$('#container').html('');
Run Code Online (Sandbox Code Playgroud)

绑定事件会发生什么?它也被删除了吗?它徘徊吗?清理它是一个好习惯吗?

html javascript jquery dom javascript-events

3
推荐指数
1
解决办法
93
查看次数

当可以选择多个选项时,在Select2事件中获取选定选项

如何<option>在听取select2:select事件时选择刚刚选择的内容?请注意,使用单选时很简单,因为只选择一个选项时,必须是刚刚选择的选项.我还希望能够找到在使用multiple-select(<select multiple>)时刚刚选择的选项.

在这种情况select2:unselect下,未经选择<option>的可以通过e.params.data.element,但事实并非如此select2:select.我没有看到为什么<option>不应该可用的原因,因为它是在这个时候创建​​的.select2:selecting但是,对于该事件,<option>尚未创建,并且在事件触发时显然无法使用.

html-select javascript-events jquery-select2 jquery-select2-4

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

JavaScript:获取sender元素

我有这个代码

var x = document.getElementsByClassName("hex");

for(var i = 0; i < x.length; i++)
{
    x[i].addEventListener("click", myFunction);
}
Run Code Online (Sandbox Code Playgroud)

动态附加onclick。我的问题是myFunction如何获得点击的元素?

javascript-events

3
推荐指数
1
解决办法
6612
查看次数

R Shiny - 带有点击事件的sankey情节

我正在尝试创建一个带有Sankey情节的R闪亮仪表板.我希望能够提取被点击的节点的名称.

有2个库可以绘制Sankey图表,networkD3和googleVis.networkD3允许您监视单击事件,即使在同一个库中实现的其他类型的绘图带有此类功能(forceNetwork()).

googleVis但是gvisSankey,package有一个可以创建sankey图的函数,作为一个选项,你可以传递一个gvis.listener.jscode应该能够捕获它的参数.

我担心我不熟悉JS而且我很难得到我正在寻找的东西.这是我设法得到的:

library(shiny)
library(googleVis)

datSK <- data.frame(From=c(rep("A",3), rep("B", 3)),
                    To=c(rep(c("X", "Y", "Z"),2)),
                    Weight=c(5,7,6,2,9,4))

SERVER <- function(input, output, session){
  sankey_click <- sprintf("var text = chart.getSelection();
 Shiny.onInputChange('%s', text.toString())", session$ns('text'))
  output$sankey <- renderGvis(
    gvisSankey(datSK, from="From", to="To", weight="Weight",
               options=list(gvis.listener.jscode = sankey_click, 
                            sankey = "{node: {interactivity: true, width: 50}}"))
  )

  click_event <- reactive({input$text})
  output$click <- renderText(click_event())

}

UI <- fluidPage(
  fluidRow(column(12, htmlOutput("sankey"))),
  fluidRow(column(12, verbatimTextOutput("click")))  
)

shinyApp(ui = UI, server = …
Run Code Online (Sandbox Code Playgroud)

javascript r javascript-events shiny googlevis

3
推荐指数
1
解决办法
922
查看次数

如何获得e.target指定onClick的确切元素?

我有一个React组件并给它onClick事件处理程序:

function Item(props) {
  return <li onClick={props.onClick}>{props.children}</li>
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用Component:

<Item onClick={ function(e) {console.log(e.target)} }>
  <span>This element is returned as e.target if clicked on it!</span>
</Item>
Run Code Online (Sandbox Code Playgroud)

单击文本时,span元素将记录为目标,当在给定范围外单击时,li元素将记录为目标.

问题是:如果li元素中有很多子元素,并且必须得到id或name,它就变成了"hacky"任务......

问题是:是否有可能将处理函数作为e.target放入指定onClick的确切元素(不是它的子节点;在本例中为li)?

PS.如果可能的话,没有jQuery解决方案.

javascript events children javascript-events reactjs

3
推荐指数
1
解决办法
2983
查看次数

无法使用Angular Service处理onbeforeunload事件

我在我onbeforeUnload的一项服务中对我的活动进行了以下回调.在我的app.run块中我有:

window.onbeforeunload = Services.beforeWindowClose;

这个方法是在服务中:

this.beforeWindowClose = function (event) {
            var currentState = $state.current.name;
            if (currentState !== constant.LOGOUT) {
                $rootScope.$broadcast("close");
                if (Utilities.isSavePending)
                    event.returnValue = constant.MSG;
            }
        }
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有:

$scope.$on("close", function () {
            Utilities.isSavePending = vm.save; //sets it to true
        })
Run Code Online (Sandbox Code Playgroud)

现在假设事件在角度上是同步的,这段代码应该在窗口关闭时给我一个弹出窗口.但是,这会直接关闭我的窗口.

我的意图是,每当用户关闭窗口时,我都会引发一个事件,看看我的控制器中是否有未保存的数据.如果有一些未保存的数据,浏览器不应该关闭并弹出,而如果没有未保存的数据,浏览器应该关闭.

我在做什么或者理解错了什么?

javascript onbeforeunload javascript-events angularjs

3
推荐指数
1
解决办法
5866
查看次数

在React中调用函数

我是React的初学者,对于在React中调用函数我不太困惑。

我看到了以下方式,我不知道何时使用哪种方式。

  • handleAddTodo ={this.handleAddTodo}
  • handleAddTodo ={this.handleAddTodo()}
  • handleAddTodo ={handleAddTodo}
  • handleAddTodo ={this.handleAddTodo}
  • handleAddTodo ={handleAddTodo()}

这些可以互换吗?我可以通过调用函数的相同方式来处理事件吗?

javascript javascript-events jsx reactjs

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

React v16-d3 v4,使用从d3-selection中选择鼠标时会得到TypeError:无法读取null的属性'sourceEvent'吗?

将d3与React结合使用,并从d3选择中导入鼠标

import { selectAll, select, mouse } from 'd3-selection';
Run Code Online (Sandbox Code Playgroud)

尝试mouse(e.target) or mouse(select('.element'))在组件中使用:时,出现以下错误:

TypeError: Cannot read property 'sourceEvent' of null
./node_modules/d3-selection/src/sourceEvent.js.__webpack_exports__.a
node_modules/d3-selection/src/sourceEvent.js:5
  2 | 
  3 | export default function() {
  4 |   var current = event, source;
> 5 |   while (source = current.sourceEvent) current = source;
  6 |   return current;
  7 | }
  8 | 
Run Code Online (Sandbox Code Playgroud)

使用react-create-app创建的项目,似乎无法访问源事件?...

javascript event-handling javascript-events d3.js reactjs

3
推荐指数
1
解决办法
1156
查看次数

删除事件侦听器方法不起作用

我有一个简单的点击功能,当点击一个按钮时,用户无法滚动.一切正常.该按钮用作切换,并且在切换的"其他"部分,即当用户再次单击时,我想删除阻止用户使用该removeEventListener();方法滚动的事件监听器.我在这个方法中调用的函数虽然不起作用?

我似乎无法弄清楚问题是什么?

codepen:https://codepen.io/emilychews/pen/MrBvzP

JS

var button = document.getElementById("button");

// function to be called and removed when button is clicked
function noscroll() {
    window.scrollTo(0, 0);
}

// TOGGLE EVENT LISTENER
var scrollToggle = false;

function toggleEventListener() {
    if (scrollToggle === false) {

        window.addEventListener("scroll", function(){
        noscroll();        
        }, false);

      scrollToggle = true;

    } else {

        window.removeEventListener("scroll", function(){
        noscroll();        
        }, false);

      scrollToggle = false;

    }
}

button.addEventListener("click", function() {
    toggleEventListener();
}, false)
Run Code Online (Sandbox Code Playgroud)
body {margin: 0; padding: 0; height: 150vh;}

#button …
Run Code Online (Sandbox Code Playgroud)

html javascript javascript-events toggle

3
推荐指数
1
解决办法
345
查看次数