0

我有一个包含多个图像的文本区域。所有图像都有一个 id,我想遍历所有这些图像并检查是否需要 onclick 事件(取决于 id)如果不需要 onclick 事件,我需要检查是否有一个并将其删除。如果需要II仍然需要删除它并添加另一个(因为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/

4

3 回答 3

1

对于一个非常简单的 HTML,比如你在这里的 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());

示范

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

于 2013-03-21T13:35:08.067 回答
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())
}

演示:小提琴

于 2013-03-21T13:36:26.640 回答
1

试试这个:

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

演示

于 2013-03-21T13:48:37.517 回答