如果在jsTree内,则jQuery单击处理程序将不起作用

问题描述

|| 首先我的问题。如何使按钮“在jsTree内部”起作用?定义为“ 0”时有效。 但是现在我使用jQuery处理程序来单击按钮。工作良好。参见示例http://jsfiddle.net/radek/5xym7/4/ 我将处理程序定义(如下)复制到了我现有的代码中(将其复制到此处有点大,而且不确定调试问题需要提供哪一部分)
$(\'button[type=button]\').click(function(){
    var params = $(this).val();
    document.getElementById(\"results\").innerHTML+=\"<BR>\"+params.split(\'|\')[0]+\" - \"+ params.split(\'|\')[1]+\" - \"+ $(this).next().prop(\'checked\');

});
页面外观 但是它不适用于jsTree内部的按钮,另一方面,
<div id=\'jstree\'></div>
外部的按钮可以与我的处理程序一起使用。 jsTree中的按钮的html
<button value=\"login|basic\" class=\"run square_button button_background\" type=\"button\"> run </button>
<input name=\"restore\" title=\"restore before ant run\" type=\"checkBox\">
jsTree外部的按钮的html
    <button class=\'run square_button button_background button\' id=\'search\' type=\'button\' value=\'Search\'>
      Search
    </button>
    

解决方法

        在您的示例中,您绑定了$(document).ready()的click事件,但是在$(document).ready()函数外部初始化了jsTree对象。 jsTree创建块将在源的那部分加载后立即执行,而$(document).ready()将在加载整个DOM之后执行。因此,当您尝试绑定到它们的click事件时,本质上讲jsTree包含的按钮尚不存在。 解决此问题的两种简单方法: 使用jQuery \的live()函数允许绑定动态创建的DOM节点 重新组织代码,因此jsTree初始化也发生在$(document).ready()中,并在创建jsTree之后绑定到click事件 我对您的小提琴做了后者,现在看来工作正常。 http://jsfiddle.net/5xym7/6/