0

我制作了一个 jQuery/javascript,它在单击图片时将页面加载到 div 中。它适用于 IE、Firefox、Chrome 但不适用于Opera ..我不知道为什么它不起作用..

请查看此页面并单击产品以查看它如何加载弹出窗口。 http://www.dev.dressmind.com

这是点击的脚本:

function qp(id) { 
    $.ajax({
        method: "get",
        url: "QuickProduct.aspx",
        data: "id=" + id,
        //beforeSend: function() { $('#main').hide('slow').fadeOut(); },
        complete: function() { 
            $('#product-area').show('200').fadeIn(); 
            $("#product-area-overlay").show();
            $(".productbox-hover").hide();
        },
        success: function(result) { 
            $('#product-area').html(result); 
        }
    }); 
}

然后我有一个看起来像这样的链接:

<a href="#" id="123123" onClick="qp(123123);return false;"><div></div</a>

所以请,有人可以快速查看并帮助我解决这个问题。

解决了

我通过将 onclick-event 移动到内部的 div 而不是将它放在链接上来解决它。

< a href="#" id="123123">
    < div **onClick="qp(123123);return false;"**> < /div>
< /a>
4

2 回答 2

1

除了 id 可能不像@Kanishka 提到的那样以数字开头的事实之外,您没有在使用它时发布代码。

您正在这样调用您的函数:onclick="qp(id)". 与其他浏览器不同,Opera(正确地)考虑id了一个未定义的变量。其他浏览器可能会猜测您实际上是指id当前元素的属性。你需要onclick="qp(this.id)"改用。

要摆脱无效 ID 并重复 onclick 处理程序,您应该考虑一次性分配所有事件处理程序。像这样的东西:

<a href="#" data-product-id="123456">...</a>
<a href="#" data-product-id="222222">...</a>
<!-- etc. -->

<script>
  jQuery("[data-product-id]").click(function() {
    qp(jQuery(this).data('product-id')); return false;
  });
</script>

顺便说一句:非 Javascript 用户呢?

还有一件事:您似乎使用了 HTML5 功能,但 XHTML Doctype 会导致许多验证错误。

于 2012-04-13T12:03:50.880 回答
0

尝试通过 jQuery 本身分配事件处理程序,而不是使用过时的onclick属性:

<a href="#" id="123123" class="example">[image]</a>
$(".example").click(function(e) {
    qp(this.id);
}

function qp(id) { 
  // ... your function...
}
于 2012-04-13T10:04:17.513 回答