2012-02-03 58 views
0

这是一个令人困惑的问题。我需要用<input>替换<input>,但我需要保留onclick属性。这里有一个例子:用jQuery分解和修改元素

<input type="image" class="previous_page_img graybutton mediumbutton" src="btn_prevpage.png" onclick="Add_Search_Param('page', 1); Refine();" alt=""> 

因为我不能<input>类型更改为一个按钮,我想用一个按钮来取代它,但是,我需要保留“的onclick”属性。所以首先,我不得不分手这个元素。将其替换为一个按钮并将原始onclick属性附加到新按钮。

所以最后,我会把这个onclick="Add_Search_Param('page', 1); Refine();"添加到新的按钮。由于onclick变化,简单的.attr.prop函数是不够的。它必须克隆onclick属性。谁能帮我?谢谢。

这里的jsfiddle不能保持onclick属性,但确实一切:http://jsfiddle.net/rAMcw/

+0

你见过http://stackoverflow.com/questions/516265/jquery-unbind-event-handlers-to-bind-them-again-later? – pete 2012-02-03 20:58:30

+0

@pete如果我正在讨论内联JavaScript,这有什么关系吗? – henryaaron 2012-02-03 21:00:40

+0

试试这个插件:http://archive.plugins.jquery.com/project/copyEvents – skybondsor 2012-02-03 21:01:38

回答

0

输入之后只需创建一个新的按钮,输入设置为display: none;(或jQuery('#input').hide()),并有按钮的onclick触发输入的的onclick(jQuery('#button').click(function(){ jQuery('#input').trigger('click'); });

+0

这是个好主意... – henryaaron 2012-02-03 21:03:56

+0

所有jQuery UI插件的工作方式都是相同的,它们隐藏了您选择的元素并将其替换为一个漂亮的元素,然后将所有内容链接到后台。 – 2012-02-03 21:06:42

+0

真相,我正在寻找更自然的解决方案,但它是一个创造性的想法,所以我喜欢它。我做了一个小提琴,但我可能想要一个不同的解决方案。http://jsfiddle.net/rAMcw/1/ – henryaaron 2012-02-03 21:09:31

2

你可以这样做(我用一个简单的JavaScript函数来测试它)

<input type="image" class="previous_page_img graybutton mediumbutton" src="btn_prevpage.png" onclick="Add_Search_Param('page', 1); Refine();" alt=""> 

var onclick = $('.mediumbutton').attr('onclick'); 

var but = $('<input/>', { type: "button", value: "pressme", onclick: onclick}); 

$('.mediumbutton').replaceWith(but); 

小提琴这里http://jsfiddle.net/KjBm3/

+0

我怎么能得到这个工作jQuery 1.4.2? – henryaaron 2012-02-03 21:14:15

+0

@ user1090389它适用于jQuery 1.4.4 http://jsfiddle.net/KjBm3/1/我无法测试它与1.4.2,但它应该是相同的 – 2012-02-04 11:32:13

+0

由于某种原因,它赢得了'在我的网站上工作,我试过了它与1.3.2,它不起作用... – henryaaron 2012-02-04 23:09:57

0

克隆怎么样?

var x = $('input').clone(true); 
x.attr('type','button').addClass('previous_page_img graybutton mediumbutton').val('Previous Page'); 
$('input').replaceWith(x); 

更新jsFiddle

0

有什么不对的转动现有input元素成一个按钮?

$("input.previous_page_img").prop("type", "button").val("Previous Page"); 

jQuery 1.4.2 :(在普通旧JavaScript中设置属性);

$("input.previous_page_img").val("Previous Page")[0].type = "button"; 

Demo

+0

原因,我只能使用'.attr'旧版本的jQuery。无法更新... – henryaaron 2012-02-03 21:15:25

+0

更新它的旧版本。 – Dennis 2012-02-03 21:18:01

+0

好吧,但如果元素,不存在于某个页面上,其余的jQuery失败? – henryaaron 2012-02-03 21:23:23