标签: jquery-events

事件授权变得有价值需要多少元素?

阅读关于jQuery性能的另一个SO问题,我开始考虑使用事件委托而不是单独绑定元素的重要性.我主要考虑的是jQuery,但我认为它可能适用于Javascript.

事件授权有两个主要目的:

  1. 允许处理程序处理尚未创建/插入DOM的元素.
  2. 将一个函数绑定到一个共同的祖先元素而不是多个兄弟元素

我的问题是关于其中的第二个问题.一般的答案可能是"它取决于确切的情况",但我想知道是否有经验法则或基准测试方法来测试这一点.

所以,问题是:在事件委托的性能优势超过性能成本之前,您需要多少元素?

javascript performance jquery event-delegation jquery-events

10
推荐指数
1
解决办法
413
查看次数

jquery - 触发自定义事件

我在jquery的ready函数中将一个自定义事件处理程序附加到body.紧接着,我成功触发了自定义事件.

$(function(){
    $("body").on("test", function(){ alert("test triggered"); }
    $("body").trigger("test");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在控制台中触发它时没有任何反应.为什么?

jquery event-handling custom-events jquery-events

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

.Dyp标签上的.keypress?

有没有办法在像这样的div元素上工作.keypress?:

<html>
<body>

<script type="text/javascript">
<!--

$('#idtext').keypress(function(event) {
  var keyCode = event.keyCode;
  $('#idtext').text(function(i, text) {

   return text + String.fromCharCode(keyCode); 

  });

});

// -->
</script>

<div id="idtext"></div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui jquery-selectors jquery-events

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

如何在模态对话框中设置输入值?

我正在研究"添加链接"功能.为此,我正在使用Twitter Boostrap JS的Modal插件.在主页面上只有要填充的"链接"字段,当用户点击"添加链接"按钮时,会弹出一个模式,用户会看到完整的表单以填充3个字段:链接,标题,标签.但是,我希望链接字段预先填充上一步的值.它与您在delicious.com上保存链接时发生的情况类似.

感谢Joe的帮助(上一个问题)我可以在模态对话框上打印linkURL,但重要的是此linkURL是带有3个字段(链接,标题,标签)的表单的链接字段的值.知道如何做到这一点?谢谢!

<html>
<head>
  <title>Example</title>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/bootstrap-modal.js"></script>
  <link rel="stylesheet" href="scripts/bootstrap.min.css">
  <link rel="stylesheet" href="main.css" />

  <script type="text/javascript">
            $(document).ready(function()
            {
                $('#modal-from-dom').bind('show',function()
                {
                    $(".modal-body").html($("#linkURL").val());
                });
            });
    </script>
</head>
<body>
  <!-- The Modal Dialog  -->
          <div id="modal-from-dom" class="modal hide fade">
            <div class="modal-header">
                <a href="#" class="close">&times;</a>
                <h3>Add Link</h3>
            </div>
            <div class="modal-body">
            <!--
            <form id='post-on-wall' method='POST' action='savePost.php' enctype='multipart/form-data'>"
        <input type='text' class='label-inline' name='linkURL' id='wall-post' value=linkURL>
            </form>
            -->
            </div>
            <div class="modal-footer">
                <a href="#" class="btn primary">Add Link</a>
            </div>
        </div>
  <div class="container"> …
Run Code Online (Sandbox Code Playgroud)

jquery modal-dialog twitter-bootstrap jquery-events

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

'show'事件不会在IE9中使用Rails中的Twitter Bootstrap Modal触发

我有一个涉及几个不同框架/库的问题,尽管主要是Twitter Bootstrap(js)和Rails.

我在我的应用程序中有一个链接响应一些js:

$(function() {

    var $modal = $('<%= escape_javascript( render 'front_end/bookings/modal', :product => @product, :customer => @customer, :booking => @booking ) %>'),
        $calendar = $modal.find('#calendar'),
        currentProduct = <%= raw(@product.to_json) %>;,
        initBookingCalendar;

    $('body').append($modal);

    $modal.modal('show');

    /* Booking Calendar */
    initBookingCalendar = function(el, productId) {

        el.fullCalendar()

        ...

    };

    $($modal).on('shown', function() {
        if($calendar.is(':empty')) {
            initBookingCalendar($calendar, <%= @product.id %>);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是'显示'事件不会因为某些原因在IE9中触发!?我在这里重现了这个问题:http://jsfiddle.net/tvkS6/并通过这样做得到它:http://jsfiddle.net/tvkS6/9/.问题是我不知道如何在我的代码中实现解决方案,因为我真的不明白问题是什么.

我必须等待initBookingCalendar直到完全显示模式的原因是jQuery FullCalendar插件要求在呈现日历之前元素可见.

任何提示都表示赞赏!

jquery ruby-on-rails fullcalendar twitter-bootstrap jquery-events

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

ScrollReveal.js - 显示Click或Event上的所有项目?

有没有办法通过点击事件显示滚动显示的所有项目? 或许揭示所有功能?

问题:

我正在使用滚动显示以及同位素.同位素的分选功能与滚动揭示反应奇怪.

当我点击"过滤器"按钮时,我正在调用同位素功能过滤器.

 $grid.isotope({filter: '.fish-filter'}); // example
Run Code Online (Sandbox Code Playgroud)

但是,如果我在点击所述文件管理器按钮后向下滚动,我的网格中就会出现漏洞,我必须在通过滚动显示所有项目后"重新点击"按钮

谢谢!!

更新

我在这里添加了布局调用 - 这至少修复了之前存在的漏洞:

window.sr = ScrollReveal({
    beforeReveal: function (domEl) {
        //$grid.isotope( 'layout'); // fixes holes
    },
    afterReveal: function (domEl) {
        $grid.isotope('layout');
    }
});
Run Code Online (Sandbox Code Playgroud)

然而 - 新过滤的物品没有"淡入",因为它们与滚动显示它们"平铺",与同位素的样式一样.理想的情况是显示所有布局场景 - 这种方式你不能注意到动画中的任何差异 - 或者另一种情况可能只是简单的恒定渐变而不管点击过滤器.

更新更新

我们决定让所有瓷砖都具有相同的高度,以便不再遇到问题.

谢谢

javascript jquery jquery-isotope jquery-events scrollreveal.js

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

如何将javascript事件从一个元素传递到另一个元素?

设置阶段:

我有一层在另一层之上.底层包含链接(简单图像),顶层包含高级工具提示,如底层的悬停.这些工具提示可能很大(它们可以轻松地重叠到其他链接上,并且几乎总是与它们作为工具提示的链接重叠).

我的问题:

我希望我的鼠标悬停事件发生在底层,然后在鼠标悬停时显示上层的工具提示.这样,当您从底部链接移开时,上层中的工具提示消失,并且新链接的工具提示可以显示出来.

如何从顶层获取事件并将它们传递到下面的图层?这样顶层就是事件透明的.

示例HTML:

jQuery(document).ready(function(){
	jQuery('div.tile').click(function(){
		jQuery('#log').html(this.id + " clicked");
		return false;
	});
	jQuery('div#top').click(function(){
		jQuery('#log').html('Top clicked');
		return false;
	});
});
Run Code Online (Sandbox Code Playgroud)
.tile { width: 100px; height: 100px; position: absolute; }
.tile:hover, over:hover {border: 1px solid black;}
.over { width: 100px; height: 100px; position: absolute; display:none}
.stack, #sandwich { width: 400px; height: 400px; position: absolute; }
#tile1 {top: 50px; left: 50px;}
#tile2 {top: 75px; left: 10px;}
#tile3 {top: 150px; left: 310px;}
#tile4 {top: 250px; left: 250px;}
#tile5 {top: 150px; left: …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-events

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

使用jQueryMobile捕获BlackBerry中的退格键

有没有办法input[type="text"]在BlackBerry中捕获退格键?我试过$('input[type="text"]').bind('keydown', function(event) { ... });并捕获除退格(del)之外的所有按键事件.按此键不会触发任何键事件.

有谁知道捕捉事件的方法?

我正在为OS 6.0开发并使用BlackBerry模拟器9800进行测试.

编辑 - 我正在测试的代码

<div id="myPage" data-role="page" data-theme="b">

  <div data-role="content">  
    <input type="text"  id="ddd" />
  </div>

  <script type="text/javascript">
    $('input[type="text"]').bind('keydown', function(e){
      if(e.keyCode == 8)
        alert('backspace trapped')
    });
  </script>

</div>
Run Code Online (Sandbox Code Playgroud)

blackberry keyevent blackberry-simulator jquery-mobile jquery-events

8
推荐指数
1
解决办法
5058
查看次数

在jquery mobile中垂直滚动期间触发swipeleft/swiperight

问题是当我想要垂直滚动时触发swipeleft/swiperight事件.

我们使用的是jquery mobile 1.1.0版本和jquery 1.7.1.

和代码是:

 $(document).delegate('#quizResumePage', 'swipeleft swiperight', function (event) {
   event.stopImmediatePropagation();
    if (event.type == 'swipeleft') {
       $('#btnnext').trigger('click');
    }  else  if (event.type == 'swiperight')  {
       $('#btnprevious').trigger('click');
    }
   event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

那么为什么当我想要翻页时滑动事件触发器?

这个问题发生在三星galaxy android 2.3.5 ...

任何人都可以帮我解决这个问题吗?

提前致谢...

android jquery-mobile jquery-events

8
推荐指数
1
解决办法
4558
查看次数

如何使用简单的代码片段触发两个不同的jQuery版本的相同功能..?

我想在这个选择框上注册onchange事件..

   <select id="demo">
        <option>Apple</option>
        <option>Orange</option>
        <option>Banana</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

我的页面上有两个版本的jQuery,使用noConflict分隔

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
        $m = $.noConflict(true);

      </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我把这段代码放在脚本标签中..

<script>
        $("div#hello").on("change","select#demo",function (){
            console.log("in $ on function");
        });
        $m("select#demo").on("change",function(){
            console.log("in $m on function");
        }); 
</script>
Run Code Online (Sandbox Code Playgroud)

我在selectbox上使用触发了onchange事件

$("#demo").val("Orange").trigger("change")
Run Code Online (Sandbox Code Playgroud)

然后它执行

 $("#demo").on("change",function(){..})
Run Code Online (Sandbox Code Playgroud)

但不要执行第二个

($m("#demo")..)
Run Code Online (Sandbox Code Playgroud)

如何触发调用两个事件处理程序的onchange事件($ and $m)

jquery jquery-events

8
推荐指数
1
解决办法
194
查看次数