2011-08-22 46 views
0

我正在嘗試調試這個(不完整的)腳本,但它的行爲不一致。主要問題是當我點擊某件物品時,有時$(editObj).removeAttr('style');運行,有時不運行。通過Chrome檢查器,我可以看到每種情況下的editObj變量都已正確定義,但並不總是刪除其內聯樣式屬性。有時候,有時候不會。無法確定原因。爲什麼只有選擇性地運行jQuery函數?

我用這段代碼搞了一點我的元素。也許關於它的一些事很明顯;無論如何,我會欣賞一些關於爲什麼會出現這種不可預測的想法!

var editObj = null; 
    var inputType = 'text'; 
    var input = '#textEdit'; 
    var formId = '#form_undefined' 

$(function() { 
$("#textEdit").click(function(event) { 
     event.stopPropagation(); 
    }); 

    $('body').click(function(event) { 
     if (editObj){ 


      //textedit contents to editobj and 
      if (inputType == 'text'){ 
       $(editObj).text($("#textEdit").val()); 
      } 
      $("#textEdit").removeAttr('style').hide(); 

      $(editObj).removeAttr('style'); 
      var previewId = $(editObj).attr('id'); 
      var formId = previewId.replace('bzm', 'form'); 
      $("#" + formId).val($("#textEdit").val()); 

      //ajax modify database 
      editObj = null; 
     } 
    }); 

    $(".editable").not("video, img, textarea") 
    .click(function(event) { 
     event.stopPropagation(); 
     loadEditor($(this)); 
    }); 
}); 

function loadEditor(element){ 

    $("#textEdit") 
     .copyCSS(element) 
     .offset($(element).offset()) 
     .css("display", "block") 
     .val($(element).text()) 
     .select(); 

    $(element).css("color", "transparent"); 

    editObj = element; 
} 

回答

1

我已經在過去的麻煩.removeAttr('style');實際上沒有刪除所有內嵌樣式。

使用

$(editObj).attr('style', ''); 

,而不是

$(editObj).removeAttr('style'); 
+0

我以爲我曾嘗試過,但..它的工作!對我來說邏輯表明,那裏的表現應該沒有什麼區別..是我擁有它的方式,還是什麼? – Damon

+1

@Damon:老實說,我不知道。我會假設你的方式應該工作(這就是我將要寫的),但過去我已經有太多的麻煩了,所以我只是訴諸'.attr('style',''); '。這可能是jQuery中的一個錯誤。不知道。 –

0

我不力看到初始化Ëeditobj變量的任何代碼..可能是我在想念安東尼..反正什麼都是編輯OBJ存在的機會null ..只需在日誌語句中的點擊函數總是記錄你的editobj,看看它是否爲空smtimes

+0

有些時候,我想跳過由身體點擊引起的功能..當沒有區域正在編輯。它還將幫助我跟蹤從一個元素到另一個元素的點擊次數,而不是擊中身體之間的距離 – Damon

相關問題