Обработчик кликов jQuery не работает, если внутри jsTree - PullRequest
1 голос
/ 01 июня 2011

Мой вопрос первый. Как заставить кнопки «внутри jsTree» работать? Работает с onclick.

Но теперь я использовал обработчик 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');

});

как выглядит страница

how the page look like

Но это не работает для кнопок, которые находятся внутри jsTree , С другой стороны, кнопки снаружи <div id='jstree'></div> работают с моим обработчиком.

HTML для кнопок внутри jsTree

<button value="login|basic" class="run square_button button_background" type="button"> run </button>
<input name="restore" title="restore before ant run" type="checkbox">

HTML для кнопок вне jsTree

    <button class='run square_button button_background button' id='search' type='button' value='Search'>
      Search
    </button>

1 Ответ

1 голос
/ 01 июня 2011

В вашем примере вы привязываете к событию click из $ (document) .ready (), но инициализируете свой объект jsTree вне функции $ (document) .ready ().Блок создания jsTree будет выполнен, как только будет загружена эта часть исходного кода, а $ (document) .ready () будет выполнен позже, после загрузки всего DOM.Таким образом, по сути, кнопки, содержащиеся в jsTree, еще не существуют, когда вы пытаетесь привязать их к событию click.

Два простых способа исправить это:

  • использовать jQuery's live () функция, позволяющая связывать динамически созданные DOM-узлы
  • реорганизовать ваш код, поэтому инициализация jsTree также происходит в вашем $ (document) .ready () и привязывается к событию click после jsTreeсоздан

Я сделал последнее с вашей скрипкой, похоже, теперь работает нормально.http://jsfiddle.net/5xym7/6/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...