2011-12-18 70 views
0

我有以下代碼:jQuery的替換JavaScript函數

$('input.next_page_img').replaceWith('<input type="submit" class="next_page_image graybutton mediumbutton" alt="Next Page" value="Next Page" title="Next Page" onclick="Add_Search_Param('page', 2); Refine();">'); 

的問題是與onclick功能。它使腳本的其餘部分失敗。當我拿出onclick函數時,它可以工作。我需要做些什麼來解決這個問題?

從頭開始,我最終決定,這是一個壞主意。相反,我寧願設置的輸入屬性...爲什麼不是這方面的工作,雖然http://jsfiddle.net/qSBHH/

+2

你有引號的問題。我建議創建該元素並將事件處理程序與jQuery連接起來。 – 2011-12-18 00:19:25

回答

2
bookmarker = $('<span />').insertBefore('.next_page_img'); 
$('.next_page_img').detach().attr({type: 'submit', value: 'save'}).insertAfter(bookmarker); 
+0

我最終認定這是一個糟糕的主意。相反,我寧願設置輸入的屬性...爲什麼這不工作,雖然http://jsfiddle.net/qSBHH/? – henryaaron 2011-12-18 00:32:53

+0

我明白了...我試圖將其實施到我的網站,它導致了兩個保存按鈕。而且,我審查了劇本,並認定它太「黑客」了 - 因爲我的口味。我用全文本圖像替換src屬性並設置按鈕的樣式,這正是我想要的,而不是我希望它成爲文本的原因。謝謝你。您的第一個解決方案回答了我最初的問題,因此我會選擇您的答案爲正確 – henryaaron 2011-12-18 03:27:11

0

由於您使用jQuery無論如何,這將會是少了很多凌亂與庫添加事件處理程序:

$('input.next_page_img') 
    .replaceWith($('<input type="submit"/>', { 
    'class': "next_page_image graybutton mediumbutton", 
    'alt': "Next Page", 
    'value': "Next Page", 
    'title': "Next Page", 
    'click': function() { 
     Add_Search_Param('page', 2); 
     Refine(); 
    } 
    })); 

您可以堵塞所有在一行,如果你喜歡。

+0

我最終認定這是一個壞主意。相反,我寧願設置輸入的屬性...爲什麼這不工作,雖然http://jsfiddle.net/qSBHH/? – henryaaron 2011-12-18 00:33:08

+0

究竟是什麼使它成爲「壞主意」?維護起來要容易得多;不得不引用帶有字符串的原始JavaScript代碼非常難看。 *編輯*噢等 - 你的意思是你在第一個地方做的是一個壞主意?對不起,我現在感到困惑:-) – Pointy 2011-12-18 00:37:56

+0

@Pointy,怎麼能「點擊」在那裏工作。它應該與$(elem).attr(「click」,function(){})'相同,這沒有任何意義。我做錯了嗎? – Esailija 2011-12-18 00:39:29

0

你爲什麼不只是這樣做:

$('input.next_page_img').replaceWith($("<input>", { 
    type: "submit", 
    "class": "next_page_image graybutton mediumbutton", 
    alt: "Next Page", 
    value: "Next Page", 
    title: "Next Page" 
}).bind("click", function() { 
    Add_Search_Param('page', 2); 
    Refine(); 
})); 
+0

我最終我們認定這是一個糟糕的主意。相反,我寧願設置輸入的屬性...爲什麼這不工作,雖然http://jsfiddle.net/qSBHH/? – henryaaron 2011-12-18 00:32:30