jQuery - 在链接上更改/添加事件

时间:2011-04-15 00:41:51

标签: jquery

我有这个链接:

<a href="#" onClick="addSide('1');return false">Link</a>

我想要的是,当我点击一个按钮(例如)时,该链接中addSide的值会增长。比如先点击我要传递给addSide功能的按钮1,再点击一下 addSide('2'),等等...

那么,是否可以通过编辑这个来替换jS的addSide函数的值,并替换为像addSide('another_value')这样的东西?

EDIT 我看到我的问题不是那么清楚。所以我举个例子:)

这是我要编辑的代码:

<div class="trackon" id="trackline">
    <span class="trackbotton1">
        <a class="lblueb" href="#" onClick="addSide('');return false">Add Side</a>
    </span>
</div>

我写了这个:

$('#trackline').find('.trackbotton1').children().attr('onclick', 'alert("example");return false');

但功能不会改变......

3 个答案:

答案 0 :(得分:4)

我会像这样使用事件绑定:

<a href="javascript: void(0);" class="side_adder" rel="1">Link</a>

然后,在你的JS中:

$('.side_adder').click(function(evt)
{
    addSide($(this).attr('rel'));
});

要更改传递的值,只需使用rel更改$(selector).attr({'rel': <whatever>});

答案 1 :(得分:1)

我建议您去unobtrusive javascript

<强> HTML

<a href="#" class="canAddSide">Link</a>

<强> JS

var curSide=1;
$('.canAddSide').click(function(event){
    addSide(curSide);
    curSide++;// increment or change the current side
    event.preventDefault();// return false;
});

答案 2 :(得分:0)

修改这基于Jimmy Sawczuk's approach,并且有效。

HTML

<a href="#" id="link" onclick="addSide();return false" rel="1">Link</a>
<button id="button">Button</button>
<div id="slide">1</div>

JS

$('#button').click(function() {
 var current_num = parseInt($('#link').attr('rel'));
 var new_num = current_num + 1;
 $('#link').attr('rel', new_num);
});

function addSide() {
    var n = parseInt($('#link').attr('rel'));
    $('#slide').text('slide number ' + n );
}

旧回答 - 这不起作用。

<a href="#" id="link" onclick="addSide('1');return false">Link</a>
<button id="button">Button</button>

$('#button').click(function() {
 var current_func = $('#link').attr('onclick');
 var current_func_parts  = current_func.split("'");
 var current_num = parseInt(current_func_parts[1]);
 var new_num = current_num + 1;
 var new_func = "addSide('" + new_num + "');return false";
 $('#link').attr('onclick', new_func);
});