2013-08-02 50 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