2012-03-05 101 views
0

我有選擇取代替換和插入的DOM元素這種方式:jquery的替換和刪除變量

$(".editLink").click(function() { 
    var $temp = $(".editLink").parent().prev().find("label").html(); 

    var $tempBox = $(".editLink").parent().prev().find("label").replaceWith("<input type='text' name='dataUpdate'/>"); 

    $tempBox.insertAfter("<input type='submit' value='Update'/>"); 
}); 

然而,改變閃爍,..和不存在。他們只能堅持一秒鐘..(我只猜對事件的時候,我怎樣才能使他們永遠堅持

UPDATE:

<table width="400px"> 
<form action="/Admin/Update?Length=4" method="post"> 
<tr> 
    <td> 
     <label for="fadsf"> 
      fadsf</label> 
    </td> 
    <td> 
     <a class="editLink" href="/Admin/MenuManagement?Length=5">Edit</a> 
    </td> 
    <td> 
     <a class="deleteLink" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#1" 
      href="/Admin/Delete?deleteID=1&amp;unDelete=1" id="1" title="0">Delete</a> 
    </td> 
</tr> 
</form> 

+0

他們默認永遠持續下去。如果你得到不同的行爲,那麼你的頁面中的其他東西也在修改DOM。 – Jon 2012-03-05 13:43:47

+0

您能否爲我們提供HTML代碼?看起來像另一個事件回調正在恢復變化。 – 2012-03-05 13:44:59

+0

做一個演示,複製問題...提供的信息是不夠的troubleblleshoot – charlietfl 2012-03-05 13:50:05

回答

1

我會想你的建議。他們只堅持了事件發生的時間,因爲你綁定到<a>標籤導致頁面重新加載或瀏覽其他地方您需要防止像這樣默認行爲:

$(".editLink").click(function (e) { 
    ... other code 

    $(e).preventDefault(); 

    ... other code 
}); 

和文檔 - https://developer.mozilla.org/en/DOM/event.preventDefault

UPDATE - 基於你現在所提供的HTML

你的HTML看起來並不有效。您無法在table標記和tr標記之間嵌套表單標記,並希望它能夠正常工作。首先,將表格標籤移動到表格外。其次,用匹配的</table>標籤關閉表格。也許這會有所幫助。

希望這會有所幫助!

+0

將拋出錯誤在jQuery ....不實用的實現http://api.jquery.com/event.preventDefault/ – charlietfl 2012-03-05 13:57:10

+0

它並沒有多大的幫助 – BlackFire27 2012-03-05 14:01:02

+0

@ charlietfl更新的實現,感謝捕捉。 – shanabus 2012-03-05 14:11:34

1

從點擊處理程序返回false將阻止以下網址瀏覽器在href

$(".editLink").click(function() { 
    var $temp = $(".editLink").parent().prev().find("label").html(); 

    var $tempBox = $(".editLink").parent().prev().find("label").replaceWith("<input type='text' name='dataUpdate'/>"); 

    $tempBox.insertAfter("<input type='submit' value='Update'/>"); 

    return false; 
}); 

您還可以使用event.preventdefault() http://api.jquery.com/event.preventDefault/

$(".editLink").click(function (event) { 
     event.preventDefault(); 
     /* your code*/ 

    }) 
+0

我看..thats爲什麼我錯了..我也使用insertAfter ..但沒有按鈕出現..爲什麼是那? – BlackFire27 2012-03-05 14:08:33

+0

insertAfter(jQuerySelector)....你有一個字符串...不知道你正在嘗試做什麼http://api.jquery.com/insertAfter/ – charlietfl 2012-03-05 14:13:58

+0

我想獲取我替換的元素,並插入之後它另一個元素..提交按鈕 – BlackFire27 2012-03-05 14:15:16