用字符串替换onclick

时间:2013-03-21 13:27:55

标签: javascript jquery string replace

我有一个包含多张图片的textarea。所有图像都有一个id,我想循环遍历所有这些图像并检查是否需要onclick事件(取决于id) 如果不需要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/

3 个答案:

答案 0 :(得分: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

无论如何,请注意,这不能用作安全措施。

答案 1 :(得分: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())
}

演示:Fiddle

答案 2 :(得分:1)

试试这个:

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

Demo