2014-10-29 2 views
0

я получаю данные JSON файла на готовом событииКак передать аргументы JQuery OnClick событие

$(document).ready(function(e){ 
     $.getJSON("data/wall.json", function(data) { 
      createWall(data); 
     }); 
    }) 

    function createWall(data) 
    { 
     for(var i=0; i<data.length;i++){ 
    var stats = $("<p class='meta'><span>14 Days Ago</span><span class='comments' onclick='commentSection("+data[i]+")'>0 Comments</span><span class='likes'>Like</span></p>"); 
    $('#wall').append(stats); 
} 
    } 

    function commentSection(data){ 
    console.log(data); 
    } 

Вот когда я нажимаю на комментарии. Он показывает Неожиданный идентификатор. Как передать конкретные данные по событию onclick

+0

Все работает нормально. Я не могу использовать onclick с аргументами. Но он вызвал без аргумента –

ответ

1

Более правильным решением будет это использовать делегирование событий и данных api like

$(document).ready(function (e) { 
    $.getJSON("data/wall.json", function (data) { 
     createWall(data); 
    }); 

    $('#wall').on('click', '.comments', function() { 
     var data = $(this).closest('.meta').data('walldata'); 
     commentSection(data); 
    }); 
}) 

function createWall(data) { 
    for (var i = 0; i < data.length; i++) { 
     var stats = $("<p class='meta'><span>14 Days Ago</span><span class='comments'>0 Comments</span><span class='likes'>Like</span></p>").data('walldata', data[i]); 
     $('#wall').append(stats); 
    } 
} 

function commentSection(data) { 
    console.log(data); 
} 
+0

Он показывает undefined –

+0

Walldata не имеет данных –

+0

@MohaideenIsmail извините ... исправлено, но при чтении данных ... это должно быть 'var data = $ (this) .closest ('. Meta'). Data (' walldata '); ' –

1

Попробуйте это: поместите кавычки вокруг данных, используя символ эвакуации.

function createWall(data) 
{ 
     for(var i=0; i<data.length;i++){ 
    var stats = $("<p class='meta'><span>14 Days Ago</span><span class='comments' onclick='commentSection(\""+data[i]+"\")'>0 Comments</span><span class='likes'>Like</span></p>"); 
    $('#wall').append(stats); 
    } 
} 
+0

Он передал [объект Object]. Не значения –

+0

для передачи значения вам нужно использовать 'data [i] .property' –

+0

@BhushanKawadkar, не думаю, что делегирование делегирования - лучшее решение? –

0

Незначительно Изменения со мной, я передал данные в data- атрибута и определить событие с .on() на .comments класса:

var stats = $("<p class='meta'><span>14 Days Ago</span><span class='comments' data-clk='"+data[i]+"' >0 Comments</span><span class='likes'>Like</span></p>"); 

$('body').on('click', '.comments', function(e){ 
    e.preventDefault(); 

    // Retrive Data 
    var data = $(this).data('clk'); 
}) 
Смежные вопросы