好的,所以......我有一个带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”,然后当用户进行点击设置或不显示图像时。
答案 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
变量中添加其他代码,然后在点击操作中执行。