2015-08-19 6 views
0

Я хочу передать объект с именем hotTraitement в параметры события .click jquery. Поэтому я объявляю мой объект, как это:Параметр в событии jquery

$(window).load(function(){ 
     container = document.getElementById('tab_traitement'); 
     var hotTraitement = new Handsontable(container, { 
      data: data_traitement}); 
}); 

И я пытаюсь передать этот объект, как это:

$('#submit_button_traitement').click(function({hotTraitement:hotTraitement}) 
{ 
    console.log(hotTraitement); 
}); 

Но это не работает, hotTraitement не определен.

Помогите пожалуйста!

+0

Почему woudl вы даже хотите сделать это? hotTraitement - это переменная, доступная изнутри вашего обратного вызова ... Почему бы просто не получить доступ к нему оттуда? – dangor

+0

Кроме того, этот вопрос является возможным дубликатом: http://stackoverflow.com/questions/3273350/jquery-click-pass-parameters-to-user-function – dangor

+0

@dangor Я уже посмотрел этот вопрос, и это то, что я пытаясь сделать, но не работает. И это действительно сложно, я хочу, чтобы этот объект использовал его в обратном вызове ajax, поэтому мне нужно передать этот объект – Erlaunis

ответ

1

Try это. Определите переменную hotTraitement как глобальную.

$('#submit_button_traitement').click({hotTraitement:hotTraitement},function(e){ 
    console.log(e.data.hotTraitement); 
}); 

SIMPLE DEMO: FIDDLE

Update:

Попробуйте этот путь.

$(document).ready(function() { 
 
    var container = document.getElementById('tab_traitement'); 
 
    var hotTraitement = new Handsontable(container, { 
 
    data: data_traitement 
 
    }); 
 

 
    //... 
 

 
    $('#submit_button_traitement').click({ 
 
    hotTraitement: hotTraitement 
 
    }, function(e) { 
 
    console.log(e.data.hotTraitement); 
 
    }); 
 

 
});

+0

Он остается неопределенным:/ – Erlaunis

+0

Вы определяете эту переменную 'hotTraitement' глобально? –

+0

думаю. Я за окном. – Erlaunis

0

Попробуйте заменяя $(document).ready() на номер $(window).load(); используя .on(), data свойство event

$(document).ready([ 
 
    function() { 
 
    // define `hotTraitement` 
 
    hotTraitement = { 
 
     "abc": 123 
 
    }; 
 
    }, 
 
    function() { 
 
    // set `event.data` to `hotTraitement` 
 
    $("#submit_button_traitement") 
 
    .on("click", hotTraitement, function(event) { 
 
     // do stuff with `event.data` : `hotTraitement` 
 
     console.log(event.data) 
 
    }) 
 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="submit_button_traitement">click</div>

+0

ваш код даст такую ​​же ошибку, как Uncaught ReferenceError: hotTraitment не определен –

+0

Правильно, hotTraitement не определено вашим кодом:/ – Erlaunis

+0

@Lison Посмотреть обновленное сообщение. – guest271314

0

почему вы хотите передать параметр hotTraitement в OnClick функции вместо этого вы можете просто получить доступ к этому внутри OnClick как этот

$(window).load(function(){ 
    container = document.getElementById('tab_traitement'); 
    var hotTraitement = new Handsontable(container, { 
     data: data_traitement}); 

    $('#submit_button_traitement').click(function(){ 
     console.log(hotTraitement); 
    }); 
}); 
+0

Но это не сработает. Я получаю объект, но я не могу применить метод, который я хочу. – Erlaunis

+0

то просто по-твоему не создайте объект hotTraitement внутри метода загрузки окна просто добавьте эти строки за пределы функции загрузки окна, это сработает для вас .... –

+0

Я уже пробовал, но это не работает:/ – Erlaunis

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