Заменить JQuery attr цитатой не работает в IE - PullRequest
0 голосов
/ 07 января 2012

Приведенный ниже код отлично работает в FF, но IE выдает ошибку, потому что функция onclick содержит кавычки. Как заставить это работать в 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>

Ответы [ 4 ]

0 голосов
/ 10 января 2014

Вероятно, это помогает:

function add(id,val) {

 $('#link'+id).attr('onClick',function (i, click) {
                    var str = new String(click);
                    return str.replace("add","remove");
                });
}
0 голосов
/ 07 января 2012

Это может сработать:

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

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

Но я настоятельно рекомендую вам прекратить использовать onClick и начать связывать события с помощью jQuery.Если бы вы могли опубликовать код в onClick, я мог бы преобразовать его в стандартные объекты и функции jQuery.

0 голосов
/ 11 января 2012

изменено на клик на href и вуаля, это работает и в IE.

0 голосов
/ 07 января 2012

IE имеет проблемы с этим, вы можете попробовать использовать метод .prop , который лучше работает в IE.Однако вы всегда будете вызывать проблемы с IE, связанные с изменением обработчиков событий.

Было бы лучше каждый раз вызывать одну и ту же функцию и просто сохранять состояние где-то на странице, даже в таком атрибуте, какпереключение класса между «добавить» и удалить.

...