0

次の関数を使用して、ajax 応答を使用して動的要素を作成します。

function itemGroupSelection(elem,majorGroupId,itemGroupId){

    var itemGroup;
    var majorGroup;

    if(elem == undefined || elem == null || elem == ""){
        var itemGroup = itemGroupId;
        var majorGroup = majorGroupId;
    }else if(majorGroupId == null && itemGroupId == null){
        var itemGroup = elem.attr("id");
        var majorGroup = elem.attr("majorgroup");
    }



    $('.breadcrumb a').removeClass('active');

    if(elem == ""){
        $('.breadcrumb a').first().addClass('active');
    }else{
        elem.addClass('active');
    }

    var selectedOutlet = $('#outlets select').children(":selected").attr("id");
    $('.item').show();
    $('.breadcrumb').show('1');
    var data = "majorGroupId=" + majorGroup + "&itemGroupId=" + itemGroup + "&outletCode=" + selectedOutlet;

    if(selectedOutlet == undefined){
        getSystemMessage('Please select an outlet.');
    }else{
        ajaxCall("/getItems","POST",data,function(result){
            var element = $('#model-item').find('.item').first();
            $('#item-list-section').empty();

            for(var i = 0; i < result.items.length; i++){
                var clone = element.clone();

                clone.attr("id", result.items[i].itemId);
                clone.find('.item-price').html("<h4>" + result.items[i].rate.toFixed(2) + "</h4>");
                if(result.items[i].itemName.length >= 20){
                    clone.find('.item-name').css('overflow','hidden');
                    clone.attr('title', result.items[i].itemName )
                }
                clone.find('.item-name').html("<h4>"+ result.items[i].itemName + "</h4>");
                clone.css('background-image','c:/zharaimages/' + result.items[i].itemId + '/image.jpg');

                clone.draggable({
                    revert : false,
                    zIndex: 1,
                    containment: "window",
                    opacity: 0.5,
                    cursor: "move",
                    helper: function() { return $(this).clone().appendTo('body').show(); }
                });
                $('#item-list-section').append(clone);
            }
        });
    }


}

次のコマンドを使用して、ローカル ディスクの背景画像を選択しようとしました。

clone.css('background-image','c:/zharaimages/' + result.items[i].itemId + '/image.jpg');

パスにイメージが定義されていない場合、デフォルトのイメージに切り替えるにはどうすればよいですか。jQuery 1.9 を使用しています。

4

2 に答える 2

0

img の onerror 属性を使用してみてください。src 属性で指定されたリンクの読み込みに失敗した場合、エラーのある ur 関数が呼び出され、そこにデフォルトの画像を設定できます (w3schools.com/jsref/event_img_onerror.asp)

于 2013-06-26T04:50:29.187 に答える
0

onerrorファイルが見つからない場合に発生するこの画像のイベントを処理する必要があります。

$('#image').error(function(){
    $(this).off('error'); // otherwise, inexistence of the default image is a real pain
    $(this).attr('src', 'http://www.google.ca/images/srpr/logo4w.png');
});

この動作中のFIDDLEを見てください。


それで、

あなたの状況では、次のようなものがあります。

var path='the path';

clone.css('background-image', 'url('+path+')');
$('<img src="'+path+'" />').error(function(){
    $(this).off('error');
    clone.css('background-image', 'url('+default_path+')');
});

お役に立てれば :-)

于 2013-06-26T04:49:20.937 に答える