使用jquery更改onclick的值

时间:2010-07-10 19:15:31

标签: jquery onclick

好的,所以......我有一个带onclick的按钮。

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

但我需要在点击Post.Favorite(15,"unset");时更改onclick值吗?有办法吗?

因为我已经读过一些不可能的地方,所以使用onclick使用jquery click事件。

但问题是......如果我使用点击事件,我如何将值发送到事件或更改它们来模拟onclick的变化?

该按钮也是由php生成的。如果用户已经在onclick中显示“unset”而已经收藏了图像,如果没有收藏则显示“set”,然后当用户进行点击设置或不显示图像时。

4 个答案:

答案 0 :(得分:2)

查看toggle方法

$(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 :(得分: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中更改的唯一删除了一个点是多少? :)

答案 2 :(得分:0)

如果要删除内联Javascript,可以将数据保存在特殊属性中,然后依赖jQuery进行单击事件处理。

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

现在您可以使用元素存储数据值,更改它并使用简单的单击事件处理程序来自动化它。

答案 3 :(得分:-1)

其他一些建议:

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

您可以在click_action变量中添加其他代码,然后在点击操作中执行。