2011-12-18 71 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