绑定到动态创建的按钮 - 使用live()?

时间:2011-12-05 22:18:30

标签: jquery ajax dynamic live

我正在使用telerik网格控件,它显示一个具有其他功能的网格,分页,排序,过滤等。

当在网格上点击过滤按钮时,它会弹出'过滤器对话框。具体而言,是具有divinput控件的button

我想绑定到过滤器button控件的点击。问题是过滤器对话框弹出'这似乎是动态完成的,因此调用$(document).ready()时元素不存在。它也没有给出身份证明,但我希望我可以从课堂上获得它。

我读过这篇文章,除非我相信它是在telerik代码中,因此更难修改...... http://www.learningjquery.com/2008/05/working-with-events-part-2

还建议使用live()并像这样绑定 - 但它似乎没有拿起控件...

关于如何绑定点击此按钮的任何想法?

由于过滤器使用ajax,我也尝试绑定到ajaxSend,但是我需要一种方法来查找导致它的ajaxSend绑定内部,或者是什么控件使它发生......我不确定该怎么做。

感谢。


使用jquery 1.4.4

使用代码

进行更新
$(".t-button.t-button-icontext.t-filter-button").live("click", function () {
                    alert('got it');
                });



    <div class="t-filter-help-text">And</div>
        <select class="t-filter-operator">
            <option value="endswith">Ends with</option>
            <option value="eq">Is equal to</option>
            <option value="ne">Is not equal to</option>
            <option value="startswith">Starts with</option>
            <option value="substringof">Contains</option>
        </select>
        <input type="text">
        <button class="t-button t-button-icontext t-filter-button">
            <span class="t-icon t-filter"></span>Filter
        </button>
    </div>

我很确定选择器不是问题,因为我已经使用.length检查了页面的静态按钮和jquery文档。当然,在jquery文档准备就绪后,单击过滤器并使动态内容可用,然后单击按钮,接收1,结果为0.


我弄清楚它为什么不起作用。在生成对话框的telerik代码中,有一个stopPropagation()调用。如果我删除它,过滤器对话框将变得不可用(单击任何地方将其关闭)。在这种情况下,我不确定是否有解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

我最终通过使用Brandon Aaron's liveQuery插件解决了这个问题,即使调用了.stopPropagation(),也允许事件传播,并允许我成功保留过滤器对话框的功能。< / p>

有关详细说明,请参阅http://blog.bigbinary.com/2009/10/14/how-live-method-works-in-jquery-why-it-does-not-work-in-some-cases-when-to-use-livequery.html