【问题标题】:Livequery fires click no matter where the user clicks in the document无论用户在文档中单击的哪个位置,Livequery 都会触发单击
【发布时间】:2009-12-07 06:52:03
【问题描述】:

当点击触发图像时,我已经用一个漂亮的小弹出窗口替换了传统的选择/选项表单元素。该页面用于会计目的,因此预计会有多个行项目。我编写了将动态生成新订单项选择/选项元素的 javascript。当页面加载时,会加载初始选项集,用户可以单击它们,弹出一些选项,选择一个,然后框关闭。移动到下一个选择,依此类推。我已将 livequery 添加到我的代码中以获取这些动态元素。但是... livequery("click"...) 似乎无论用户单击页面的哪个位置都会触发。非常沮丧。

我在这里读到了 jQuery 1.3 中的“live()”有多棒,但我无法完全升级到 jquery 1.3,因为自定义 JS 文件依赖于 1.2,所以使用 live() 不可行问题,但是我已经调用了 livequery() 插件,我真的需要了解我是否正确使用它。

我将发布部分代码。太多了,无法发布所有内容。

基本上,我正在搜索以“bubble”开头的 div,然后是一个数字。然后在每个人身上运行事件。只有bubble1是静态的,2及以上是动态的。我错过了 livequery 的全部用法吗?

>$jb('div[id^="bubble"]').each(function () {
> var divid = $jb('div[id^="bubble"]').filter(":first").attr("id");
>var pref = "bubble";
>var i = divid.substring((pref.length));
>var trigger = $jb('#trigger' + i, this);
>var popup = $jb('#pop'+ i, this).css('opacity', 0);
>var selectedoption = $jb('selectedOption' + i, this);
>var selectedtext = $jb('selectedOptionText' + i, this);
>$jb([trigger.get(0), popup.get(0)]).livequery("click",
> function () {
>//alert(i);
// code removed for brevity (just the contents of the popups)
>});

【问题讨论】:

    标签: jquery-plugins livequery


    【解决方案1】:

    Live 通过使用事件委托来工作。一个 click 事件附加到 body 上,并且只要单击某些东西,选择器就会针对目标进行测试。如果它通过了选择器测试,它会调用该函数(从而模拟点击事件)。

    你可能想要这样的东西:

    $('div[id^="bubble"]').livequery("click", function() {
        var divId = $(this).attr("id");
        var i = divId.substring("bubble".length);
        var trigger = $("#trigger" + i, this);
        var popup = $("#pop" + i, this).css("opacity", 0);
        // alert(i);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多