2012-06-01 4 views
2

Я пишу функцию для динамической загрузки пользовательских листьев jQuery UI с содержимым. Я знаю (думаю), что часть AJAX работает, когда я снял ее с другого рабочего загрузчика AJAX, но функция в целом не работает.Как написать функцию, которая использует динамические селектора?

Код:

function load_leaf(link){ 
    var link = link; 
    $.ajax({ 
      cache : false, 
      type : 'POST', 
      async: false, 
      url : 'includes/'+ link +'.php?'+ new Date().getTime(), 
      dataType : 'text', 
      data: { 
       owner : '$user_id' 
      }, 
      success: function(msg){ 
       $("#" + link).html(msg); 
       console.log('Can\'t see me in Chrome, but ok in firefox !') 
      }, 
      error: function() { 
       console.log($.makeArray(arguments)); 
      }, 
      complete: function() { 
       console.log($.makeArray(arguments)); 
      } 

    }); 
}; 
$(function(){ 
    $('.accordian').click(function(){ 
     var link = this.getAttribute("link"); 
     load_leaf(link); 
    }); 
});  

По какой-то причине это не работает. Точка разлома, кажется, эта линия
$("#" + link).html(msg);
В частности, селектор, как селектор с твердым кодированием, отлично работает. Переменная связи правильно заполнена. Я знаю это, так как я могу правильно предупредить значение. Ссылка не проблема, так как я заменил всю функцию ajax на простой класс добавления, и он все еще не работает, он также разбился на селектор.

EDIT:
Это ДИВ, как напечатано на PHP:

<h3 class="accordian" id="'.$tab_id.'" link="'.$tab_link.'" > 
<a href="#">'.$tab_name.'</a> 
</h3> 
<div id="'.$tab_link.'"><p>Hi</p></div> 

HTML, для первого является:

<h3 class="accordian" id="accordian_manage.php" link="accordian_manage.php" ><a href="#">Manage Images</a></h3><div id="accordian_manage.php"><p>Hi</p></div> 
+0

'уаг ссылку = ссылка,' Что точка, что если ссылка уже определена? –

+0

Да, но ваши образцы кода в порядке и короткие - это концепции [SSCCEE] (http://sscce.org). :) –

+0

Вы тестируете это на локальном хосте или сервере? Просто интересно, из-за вашего 'Can \ 't видеть меня в Chrome, но нормально в firefox!' Log. –

ответ

1

Ваш идентификатор имеет период . в нем, whi ch jQuery интерпретируется как цепной селектор классов.

Вы можете изменить ссылку/ID, или использовать этот хак:

$("[id='" + link + "']"); 

Live demo

0

Я думаю, ваша проблема есть с Jquery не находя div для загрузки msg..Поставить аккордеон div, чтобы я мог дать вам правильный селектор

+0

Что значит дать мне соответствующий селектор? Он динамический, а не жесткий. О, и разметка размещена. – SpeedCrazy

+0

Перед установкой идентификатора на аккордеон удалите из него .php .. и внутри функции успеха удалите .php из своей ссылки и используйте его как селектор, он должен работать хорошо –

Смежные вопросы