2013-03-21 3 views
0

У меня есть текстовое поле, содержащее несколько изображений. У всех изображений есть идентификатор, и я хочу пропустить все эти изображения и проверить, нужно ли событие onclick (зависит от id) Если вам не нужно событие onclick, мне нужно проверить, есть ли он и удалить его. Если необходимо, мне все равно нужно удалить его и добавить другое (потому что значение onclick можно было бы изменить)заменить onclick в строке

Как это сделать?

<img id="slideShowImage_3" style="border: 1px solid black; cursor: pointer;" title="3" onclick="loadSlideShow('7','open','3','','2')" src="uploads/nieuws/7/1363788115.jpg" alt="3" /> 
<img id="slideShowImage_3" style="border: 1px solid black; cursor: pointer;" title="3" src="uploads/nieuws/7/1363788115.jpg" alt="3" /> 

http://jsfiddle.net/wmrqk/4/

+5

Ваше текстовое поле содержит изображения? Вы имеете в виду HTML элементов изображений? –

+1

У вас есть два изображения с одинаковым идентификатором; это строго запрещено. –

+0

Это текстовый редактор, и 2 изображения в моем примере совпадают с 1 и 1 без onclick – eric22269

ответ

1

Попробуйте это:

function cleanCode() { 
    var container = $('<div>' + $('#text1').val() + '</div>'); 
    container.find('img').removeAttr('onclick'); 
    $('#text2').html(container.html()); 
} 

Demo

+0

спасибо, мне нравится идея размещения контента в div, это должно дать мне все параметры jquery – eric22269

1

Для очень простого HTML, как тот, который вы здесь вы можете сделать это:

$('#text2').html($('#text1').html().replace(/onclick="[^"]*"/g,'')); 

Но будьте очень осторожно: разбор HTML в регулярном выражении не может в общем случае, чтобы вы может только сделать это, если вы знаете, откуда приходит ваш HTML, и каково это.

Если ваш HTML хорошо сформирован, вы также можете сделать это:

var e = $('<div>'+$('#text1').val()+'</div>'); 
e.find('img').attr('onclick',''); 
$('#text2').html(e.html()); 

Demonstration

В любом случае следует помнить, что это не может быть использован в качестве меры безопасности.

+0

спасибо, мне нравится идея размещения контента в div, это должно дать мне все параметры jquery – eric22269

1

Может быть не круто, но вы можете сделать что-то вроде

function cleanCode() { 
    var els = $($('#text1').val()); 
    els.each(function(i, v){ 
     var $this = $(this); 
     if($this.attr('id') == 'slideShowImage_1'){ 
      $this.removeAttr('onclick') 
     } 
    }); 
    console.log($('<div></div>').append(els).html()) 
} 

Demo: Fiddle

Смежные вопросы