javascript
  • php
  • jquery
  • ajax
  • 2014-09-26 5 views -2 likes 
    -2

    Мне нужен идентификатор (и другие атрибуты, такие как значение) диапазона, ранее созданного в событии ajax. Есть ли способ сделать это?получить идентификатор и значение динамически созданного элемента jquery

    Это как оболочка создается на PHP пост:

    echo "<span class='non-skin-symptom-choice disease_option' ". 
         "onclick='showinfo(".$var[0].");' id=".$var[0].">" 
         .$var[1]." -- ".number_format($var[3]*100, 2, '.', '')."%</span>"; 
    

    , и я хочу, чтобы получить его идентификатор каждый раз, когда флажок щелкнули.

    $(".chb").click(function(){ 
    
         var id= $(this).attr('id'); 
         var list=[]; 
    
         $('.disease_option').each(function(){ 
          alert("this.val=="+ $(this).attr("val"));  //i need the value here 
          var str= $(this).attr("value").split(" -- ")[1]; 
          alert(str); 
          str=str.slice(0,str.length - 1); 
          if(parseFloat(str) >=support) 
           list.push(id)        //i need the id here 
         }); 
    

    флажок не создается динамически, так что $ ("БКИ "). Нажмите (функция() {} работает.

    каким-то образом, $ (это) .attr (" ID") работы но $ (this) .attr ("val") возвращает undefined ... Я также пробовал $ (this) .attr ("value"), но те же результаты. $ (this) .val возвращает пусто.

    +0

    $ ("non-skin-symptom-choice"). Attr ("id"); – Tauri28

    +0

    @ Tauri28 - это предполагает, что существует только один вариант выбора .non-skin-symptom-choice, который, вероятно, не тот (или им не нужен этот конкретный идентификатор). – jfriend00

    +0

    Где ваш класс .chb? –

    ответ

    0

    $(document).on('click','.chb',function(){ 
        var id = $(".non-skin-symptom-choice").attr("id"); 
    }) 
    

    как у этого есть привязка к событию высокого уровня, и он может получить элементы, которые были cr в рабочем режиме

    +0

    эти флажки не создаются динамически. Как-то, $ (this) .attr ("id") работает, но $ (this) .attr ("val") возвращает undefined ... Я также пробовал $ (this) .attr ("value"), но те же результаты , $ (this) .val возвращает пустое. – Ray

    +0

    как span не имеет атрибута значения использовать это var value = $ (". Non-skin-symptom-choice"). Html(); –

    +0

    ах ... вот почему. Благодарю. .html(); должно сработать. 0 :) – Ray

    0

    Связывание, которое вы используете, называется «прямой» привязкой, которая привязывает обработчик к уже существующим элементам. Он не будет привязан к элементам, созданным в будущем. Чтобы сделать это, вам придется создать "делегированы" обвязки используя()

    $(document).on('click','.chb',function(){ 
        var id = $(".non-skin-symptom-choice").attr("id"); 
    }) 
    

    возможно дубликат: Click event doesn't work on dynamically generated elements

    0

    Попробуйте

    alert($(".non-skin-symptom-choice").attr("id")); 
    
    0

    Если ваш DOM узел не существует при загрузке страницы (то есть она была добавлена ​​на страницу через AJAX после загрузки страницы), jQuery не может ее увидеть, если вы попытаетесь ее обновить или прочитать с помощью методов jQuery. Один из способов преодолеть это - настроить функцию jQuery для ссылки на класс или идентификатор родительского узла, на который вы хотите настроить таргетинг (при условии, что родительский класс загружается на страницу при загрузке страницы) вместе с классом узла вы хотите настроить таргетинг. Например:

    $(".chb").click(function(){ 
        var id = $(".your-parent-class .non-skin-symptom-choice").attr("id"); 
        } 
    } 
    
    Смежные вопросы