2012-01-06 84 views
0

下面的代碼在FF中正常工作,但IE會拋出錯誤,因爲onclick函數中包含引號。如何使這項工作在IE瀏覽器?用報價替換jquery attr在IE中不起作用

我在做這樣的事情

<a href="#" onclick="add('1','val1')" id="link1">Link1</a> 
<a href="#" onclick="add('2','val2')" id="link2">Link2</a> 

<script> 
function add(id,val) { 
//do something 
$('#link'+id).attr('onClick',$('#link'+id).attr('onClick').replace("add","remove")); 
} 

function remove(id,val) { 
//do something 
$('#link'+id).attr('onClick',$('#link'+id).attr('onClick').replace("remove","add")); 
} 
</script> 

舉例:鏈路1被點擊後鏈接應更新爲以下

<a href="#" onclick="remove('1','val1')" id="link1">Link1</a> 
+0

你可以發佈什麼'onClick'的價值是什麼? – Blender 2012-01-06 20:44:09

回答

0

更改onclick到href,它瞧它也適用於IE。

0

IE有問題與,你可以嘗試使用.prop方法在IE中更好用。但是,你總是會導致IE問題與更改事件處理程序混淆。

每次調用同一個函數並在頁面上的某處保存一個狀態會更好,即使是在諸如在「添加」和「刪除」之間切換類的屬性。

0

這可能會實現:

var $link = $('#link'); 
var click = $link.attr('onClick'); 

$link.removeAttr('onClick'); 
$link.click(function() { 
    eval(click.replace("XYZ","abc")); 
}); 

但我強烈建議你停止使用onClick,並開始使用jQuery綁定事件。如果您可以在onClick中發佈代碼,我可以將其轉換爲標準的jQuery對象和函數。

+0

更新問題。請幫忙。 – ChandraZ 2012-01-06 21:42:15

0

也許它可以幫助:

function add(id,val) { 

$('#link'+id).attr('onClick',function (i, click) { 
        var str = new String(click); 
        return str.replace("add","remove"); 
       }); 
}