0

複数の画像を含むテキストエリアがあります。すべての画像には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/

4

3 に答える 3

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

ここにあるような非常に単純な 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 container = $('<div>' + $('#text1').val() + '</div>');
    container.find('img').removeAttr('onclick');
    $('#text2').html(container.html());
}

デモ

于 2013-03-21T13:48:37.517 に答える