javascript - 我可以在自定义事件的 jQuery 实时处理程序中获取可用数据吗?

标签 javascript jquery event-handling bind live

jQuery 现在允许您使用 live处理自定义事件,这是我在最近的项目中使用过的,我发现它非常方便。然而,我遇到了一个限制/错误,我希望有人能够帮助我。

当你触发一个事件时,你也可以传递额外的数据数组,像这样:

 $(this).trigger('custom', ['foo', 'bar' ]);

如果您只是使用 bind ,您绝对可以访问这些变量。但是,如果您使用的是现场直播,那么您将无法访问数据据我所知。我错了吗?还有别的办法吗?

下面是一些演示代码来说明:

 $().ready(function() {

    $('button').click(function(){
        $('<li>Totally new one</li>').appendTo('ul');
    });

    $('li').bind('custom', function(e, data) {
        // this one works fine for old elements, but not for new ones
        $('#output1').text('Bind custom from #' + e.target.id + '; ' + data);
    }).live('custom', function(e, data) {
        // this one triggers for old and new elements, but data is useless
        $('#output2').text('Live custom from #' + e.target.id + '; ' + data);
    }).live('click', function(){
        $('div').text('');
        // just using click count to illustrate passing data in the trigger
        var clicks = $(this).data('clicks');
        if(typeof clicks == 'undefined') clicks = 1;
        $(this).trigger('custom', ['Times clicked: ' + clicks ]).data('clicks', clicks + 1);
    });
});

以及相关的 HTML:

<button>Add</button>
<ul>
    <li id="one">First Item</li>
    <li id="two">Second Item</li>
    <li id="three">Third Item</li>
</ul>
<div id="output1">Result 1</div>
<div id="output2">Result 2</div>

最佳答案

看起来最简单的方法可能是使用在 http://docs.jquery.com/Events/trigger#eventdata 的最后一个“替代”示例中描述的格式。 .该示例使用对象文字来指定事件对象,您可以在其中创建自定义属性。我也试过你上面描述的方法无济于事,但替代格式对我有用。所以不是调用

$(this).trigger('custom', ['Times clicked: ' + clicks ])

尝试

$(this).trigger({type:'custom', clicks: clicks});

然后通过以下方式在“自定义”事件的事件处理程序中引用它:

"Times clicked: " + e.clicks;

希望对您有所帮助!

关于javascript - 我可以在自定义事件的 jQuery 实时处理程序中获取可用数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1505673/

相关文章:

javascript - 控制回调的 "this"上下文

javascript - 调整大小时动态更改div的高度

.net - 如何在PowerShell中添加事件 Action 处理程序

javascript - 触发点击并链接点击行为

Javascript Jtable 单击两次时关闭子表

javascript - Jquery 根据输入值显示或隐藏元素?

javascript - 函数没有返回值

javascript - 监听事件,例如在 JavaScript 中添加新元素

javascript - 将 javascript 输出保存到文件中?

javascript - 如何在名称动态更改时调试 Rally 2.0 app.js 文件