6

我正在使用视频预览系统。我的源代码片段是

<li id="liVideoList">
    <div class="thumbitem">
        <div>
            <a>
                <img alt="" src="images/download.png" onclick="download('ID')" title="Download" />                                     
            </a>
        </div>
        <img class="imagThumb" alt="Thumbs" class="thumb" src="#Path#" />
    </div>                                           
</li>

点击 li 有一个预览视频的功能。它是动态执行的,没有问题。但是如果我点击 li 里面的下载按钮,li 和下载按钮的功能都可以工作,这意味着预览发生了不受欢迎的变化。为了避免这种情况,我在下载代码之后添加了以下函数

event.stopPropagation();

代码看起来像

function Download(Id) {    
    $.ajax({
        type: "POST",
        url: "MyWebMethods.asmx/Download",
        data: { "Id": Id}
    }).complete(function (data) {

    });
    event.stopPropagation();
}

但是这两个功能仍然有效

4

4 回答 4

17

你可以这样做:

function DownloadAsset(AssetId, e) {

    if (!e) var e = window.event
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();

    // your ajax call
    $.ajax({....})
}

wheree指的是所有浏览器中的事件,您可以访问该事件。

于 2013-11-12T11:13:00.713 回答
4

首先,您的 HTML 无效,因为您的a元素没有nameorhref属性。其次,如果您使用 jQuery 进行逻辑处理,您也可以使用它来连接您的事件:

<li runat="server" id="liAssetList">
    <div class="asset_thumbitem">
        <div class="thumboptions" style="display: none;">
            <a href="#"><img alt="Download" src="images/download_icon.png" data-asset="#UUID#" title="Download" /></a>
        </div>
        <img class="assetlist_imagThumb" alt="Thumbs" class="asset_thumb" src="#ThumbnailPath#" />
    </div>                                           
</li>
$('.thumboptions a').click(function(e) {
    e.stopPropagation();
    e.preventDefault();
    var assetId = $('img', this).data('asset');

    $.ajax({
        type: "POST",
        url: "ClientMethods.asmx/DownloadAssets",
        data: { "AssetId": assetId}
    }).complete(function (data) {
        // do something..
    });
});
于 2013-11-12T11:17:19.550 回答
2

你可以改变这个:

DownloadAsset(AssetId)

对此:

DownloadAsset(AssetId, event)
于 2013-11-12T11:21:17.677 回答
0

您可能还需要return falseDownloadAsset功能

于 2013-11-12T11:11:29.110 回答