2012-02-03 9 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();"を追加しました。オンクリックが変化するので、単純な.attrまたは.prop関数では不十分です。 onclick属性をクローンする必要があります。誰でも助けてくれますか?ありがとう。 onclickの入力のをトリガーhttp://jsfiddle.net/rAMcw/

+0

あなたはhttp://stackoverflow.com/questions/516265/jquery-unbind-event-handlers-to-bind-them-again-laterを見たことがありますか? – pete

+0

@pete私はインラインJavaScriptについて話していますか? – henryaaron

+0

このプラグインを試してください:http://archive.plugins.jquery.com/project/copyEvents – skybondsor

答えて

0

ちょうど入力した後、新しいボタンを作成し、display: none;(またはjQuery('#input').hide())への入力を設定し、ボタンを持っている:ここでは

はonclickの属性を保存しませんが、他のすべてはないjsFiddleですここにあなたが行うことができますのonclick(jQuery('#button').click(function(){ jQuery('#input').trigger('click'); });

+0

それは良い考えです... – henryaaron

+0

すべてのjQuery UIプラグインが同じように機能します。選択した要素を非表示にして、それをかなりの要素に置き換えて、背後のすべてをリンクします。 –

+0

真実、もっと自然な解決策を探していますhttp://jsfiddle.net/rAMcw/1/ – henryaaron

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

+0

@ user1090389 jQuery 1.4.4で動作します。http://jsfiddle.net/KjBm3/1/ 1.4.2でテストできませんが、同じである必要があります –

+0

何らかの理由で、私のサイトで仕事をしてみたそれは1.3.2で動作しません。 – henryaaron

0

クローニングはどうですか?

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

は、ボタンの中に、既存のinput要素を回すと間違っている何jsFiddle

0

を更新しましたか?

$("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しか使用できませんでした。 Cantのいずれかの更新... – henryaaron

+0

古いバージョンのためにそれを更新しました。 – Dennis

+0

しかし、要素が特定のページに存在しない場合、残りのjQueryは失敗しますか? – henryaaron

関連する問題