изменить значение onclick с помощью jquery - PullRequest
1 голос
/ 10 июля 2010

Хорошо, так что ... у меня есть кнопка с кликом.

<input id='post-favorite' onclick='Post.Favorite(15,"set");' type='submit' value='Favorite'>

но мне нужно изменить значение onclick при нажатии на Post.Favorite(15,"unset");, есть ли способ сделать это?

Поскольку я читал в некоторых местах, что невозможно, intead use onclick использует событие jquery click.

Но проблема в том ... если я использую событие щелчка, как я могу отправить значения событию или изменить их, имитируя изменение onclick?

Также кнопка генерируется php. Если пользователь уже добавил изображение в избранное, если в «щелчке» отображается «unset», а если оно не добавлено в избранное, то «установите» на то, когда пользователь установит щелчок или нет изображения.

Ответы [ 4 ]

2 голосов
/ 10 июля 2010

Взгляните на метод переключения

$(document).ready(function(){

  $('#post-favorite').toggle(
     function(){Post.Favorite(15,"set");},
     function(){Post.Favorite(15,"unset");}
   );

}

Обновление ( после комментариев )

Используйте эту функцию оболочки

function wrapper(elem, id, initial)
{
    var $elem = $(elem);
    var set_state = $elem.data('set_state');
    if (set_state) // invert state
        set_state = (set_state=='set')?'unset':'set';
    else // initialize state
        set_state = initial;

    Post.Favorite(id,set_state);
    $elem.data('set_state', set_state);
}

и используйте его как

<input id='post-favorite' onclick='wrapper(this, 15,"set");' type='submit' value='Favorite'>
1 голос
/ 10 июля 2010

Javascript

var PostFavorite = (function(_state) {
  return function(id, state) {
    _state = _state || state;
    Post.Favorite(id, _state);
    _state = (_state == "set") ? "unset" : "set";
  };
})();

HTML

<input onclick='PostFavorite(15,"set");' id='post-favorite' type='submit' value='Favorite'>

Примечание: единственная вещь , которую вы изменилив вашем HTML это то, что вы удалили точку .Насколько круто это?:)

0 голосов
/ 10 июля 2010

Некоторые другие предложения:

var click_action = 'Post.Favorite(15,"set");'
$("#post-favorite").click(function() { eval(click_action); });

Вы можете поместить другой код в click_action переменную, после чего он будет выполнен при нажатии кнопки.

0 голосов
/ 10 июля 2010

Если вы хотите удалить встроенный Javascript, вы можете хранить данные в специальном атрибуте, а затем полагаться на jQuery для обработки событий щелчка.

http://api.jquery.com/jQuery.data/

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

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