【问题标题】:chrome not working with jquery removechrome 不能与 jquery remove 一起使用
【发布时间】:2013-08-02 22:22:59
【问题描述】:

谁能解释为什么这个 jsfiddle 不能在 chrome 中运行,但在 Firefox 中却可以完美运行?

这是链接: http://jsfiddle.net/Bu33n/

以下是 jsfiddle 无法访问的代码:

<div class="container">
    <div class="scheduleSet" id="remove19s">
        <p>I am a schedule19</p>
    </div>
    <div class="scheduleSet" id="remove5s">
        <p>I am a schedule5</p>
    </div>
    <div class="phoneSet" id="remove19p">
        <p>I am a phone19</p>
    </div>
    <div class="phoneSet" id="remove5p">
        <p>I am a phone5</p>
    </div>
<a href="javascript:void(0);" onclick="Location.removeMe('remove19p');">Remove me</a>
 <a href="javascript:void(0);" onclick="Location.addMe();">Add me</a>

</div>

JS:

Location.removeMe = function (data) {
    var stuff = "";
    stuff = data;
    $('div').remove('#' + stuff);
    return false;
};

Location.addMe = function () {
    $('.container').append("<div class='phoneSet' id='remove19p'>" +
        "<p>I am a replacement phone19</p>" +
        "</div>");
}

【问题讨论】:

  • 你为什么不使用$('#' + stuff).remove()?就此而言,当您可以说'#' + data 时,为什么还要有stuff 变量? (请注意,当您立即将其设置为下一行的其他内容时,将 stuff 初始化为空字符串是没有意义的。)
  • @nnnnnn 我的印象是必须通过 jquery 文档以这种方式完成。
  • 没有。 $('div').remove('#' + stuff) 表示首先选择页面上的所有 div 元素,然后删除与 '#' + stuff 选择器匹配的元素。使用$('#' + stuff).remove() 既简单又快捷,因为它表示首先选择与该id 匹配的元素,然后将其删除。
  • @DavidThomas 哎呀,你是对的,我没有定义命名空间。稍后我会发布更具体的问题。
  • @nnnnnn 谢谢我试试看。

标签: javascript jquery google-chrome


【解决方案1】:

不是谷歌浏览器不能在这里工作,而是 Firefox 出于某种原因忽略你未定义的 Location 命名空间。确保你已经定义了它并且你的函数属于它,或者只是以这种方式使用你的函数(这似乎更适合你的情况):

function removeMe(data) { ... }
function addMe() { ... }

在您的链接的onclick attributes 中,分别是onclick="removeMe('remove19p'); return false;"onclick="addMe(); return false;"

【讨论】:

  • 看来FF已经有一个Location对象,虽然我不知道它是什么:jsfiddle.net/Bu33n/13(我知道location(小写“l”)但不知道@ 987654330@.)
  • @nnnnnn 这很奇怪。我知道window.location,但不知道Location
  • 是的,我尝试用谷歌搜索它,但一直只得到关于小写版本的结果。
【解决方案2】:

您需要为 Location 分配一个新对象才能在 Chrome 中工作

Location = new Object();

【讨论】:

  • FF 中的(显然是预先存在的)Location 对象是什么? (我知道location 带有小写“l”,但不知道大写“L”版本。)
  • 可能没有预先存在的对象,可能只是FF检查了它是否可以找到一个对象(位置),当它没有找到它时自动神奇地实例化它.
  • FF 中有一个Location 对象:jsfiddle.net/Bu33n/13 - 它不会仅仅因为它们被引用而自动创建对象(为什么会这样?)。
  • 看起来 Location 是一个 DOMPrototype 并且 window.location 是 FF 中的 Location 类型。我没有找到任何网站。虽然,我在 FF 中尝试了这段代码 ({}).toString.call(window.location)({}).toString.call(Location)
【解决方案3】:

试试这个:

    function removeMe(data) {
        $('div').remove('#' + data);
        return false;
    };
    function addMe() {
        $('.container').append("<div class='phoneSet' id='remove19p'>" +
            "<p>I am a replacement phone19</p>" +
            "</div>");
    }

和 HTML :

<a href="javascript:void(0);" onclick="removeMe('remove19p');">Remove me</a>
<a href="javascript:void(0);" onclick="addMe();">Add me</a>

【讨论】:

  • 请注意,如果您只是将其直接插入 OP 的小提琴中,这将不起作用,因为这些函数将是文档就绪处理程序的本地函数,并且无法从内联 onclick 属性访问。
猜你喜欢
  • 1970-01-01
  • 2012-01-25
  • 2015-09-04
  • 2021-05-09
  • 2020-01-28
  • 2018-01-23
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多