2013-08-02 51 views
0

任何人都可以解释为什么这个jsfiddle不适用于铬,但在Firefox中完美地工作?铬不工作与jquery删除

这里的链接: http://jsfiddle.net/Bu33n/

这里是以防万一的jsfiddle代码inaccesible:

<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>"); 
} 
+2

你为什么不用'$('#'+ stuff).remove()'?对于这个问题,为什么当你只能说'''数据'时,你甚至有'stuff'变量? (并且注意,当你立即将它设置为下一行中的其他东西时,没有必要将'stuff'初始化为空字符串。) – nnnnnn

+0

@nnnnnn我之前的印象是它必须通过jquery文档以这种方式完成。 – Nimchip

+1

编号'$('div')。remove('#'+ stuff)'首先选择页面上的所有div元素,然后删除与'#'+ stuff选择器匹配的元素。使用'$('#'+ stuff).remove()'既简单又快捷,因为它首先选择与该id匹配的元素,然后将其删除。 – nnnnnn

回答

2

而不是谷歌Chrome浏览器不工作在这里,发生的事情是,Firefox是俯瞰您的未定义的Location名称空间出于某种原因。请确保你定义它,你的职能属于它,或者只是用你的函数这种方式(这似乎更appropiate您的具体情况):分别onclick="removeMe('remove19p'); return false;"onclick="addMe(); return false;"

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

而且在链接的onclick attributes, 。

+1

似乎FF已经有一个'Location'对象,但我不知道它是什么:http://jsfiddle.net/Bu33n/13/(我知道'location'(小写“l”),但是不是'位置'。) – nnnnnn

+0

@nnnnnn这很奇怪。我知道'window.location',但没有'Location'。 – federicot

+0

是的,我试着用Google搜索,但只是得到关于小写版本的结果。 – nnnnnn

1

试试这个:

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> 
+0

请注意,如果您直接将其直接插入到OP的小提琴中,则这将不起作用,因为这些函数对于文档就绪处理程序而言是本地的,并且不能通过内联的'onclick'属性进行访问。 – nnnnnn

2

您需要分配一个新的对象来定位它在Chrome

Location = new Object(); 
+0

什么是(显然是预先存在的)FF中的'Location'对象? (我知道“l”的位置是小写的“l”,但不是大写的“L”版本。) – nnnnnn

+0

可能没有预先存在的对象,它可能只是检查FF是否可以找到对象(位置),当它没有发现它自动神奇地实例化它。 – miah

+0

FF中有一个'Location'对象:http://jsfiddle.net/Bu33n/13/ - 它不会自动创建对象,因为它们被引用(为什么会这样?)。 – nnnnnn