2010-07-10 4 views
1

Итак, у меня есть кнопка с onclick.изменить значение onclick с помощью jquery

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

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

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

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

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

ответ

2

Посмотрите на метод toggle

$(document).ready(function(){ 

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

} 

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

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

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'> 
+0

Пояснение обновлено. Идентификатор может меняться ... я не знаю, могу ли я получить идентификатор ... –

+0

У вас есть несколько этих кнопок на вашей странице или только один? Также вы не могли бы понять, что что-то установлено/отключено внутри функции «Post.Favorite» и переключается туда? –

+0

У меня есть только одна кнопка, и мне нужно, чтобы это deppending, если изображение настроено или не делает наоборот, но также нужно получить идентификатор изображения ... если я не получу идентификатор, я не могу знать, какое изображение добавить в избранное или удалить. –

1

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 является то, что вам 've rem oved точка. Как прохладно это? :)

0

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

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

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

-1

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

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

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

+1

нет, просто нет, больше нет времени. – redsquare

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