3

AJAXによって更新されるjeditableフィールドがあるので、.live()をJeditableと組み合わせて使用​​して、AJAXの更新後にjeditableフィールドを永続的にバインドできるようにしています。ただし、live()を使用すると、最初の「クリック」が抑制され、フィールドを編集可能にするのは2回目のクリックです。

興味深いことに(そしておそらく解決策の鍵) 、参照として「this」を使用すると、個々のjedtxtクラスフィールドごとに最初のクリックが抑制されます(つまり、フィールドA jedtxtを入力するには2回クリックし、次に編集を入力するにはもう一度2回クリックする必要がありますフィールドBjedtxt)ですが、クラス名'.jedtxt'を使用すると、最初のクリックは1回だけ抑制されます(フィールドAに入るには2回クリックする必要がありますが、その後はシングルクリックでフィールドBに入ることができます-'remember'のように見えますクラス全体の最初のクリック。

$(this)の使用jedtxtクラス要素がクリックされるたびに最初のクリックを抑制します。

$('.jedtxt').live('click', function() {
$(this).editable('/post/somewhere',{ // note use of $(this)
'submit': 'OK',});});

$('。jedtxt')の使用jedtxtクラスのみが最初にクリックされたときの最初のクリックを抑制します。

$('.jedtxt').live('click', function() {
$('.jedtxt').editable('/post/somewhere',{ // note use of $('.jedtxt')
'submit': 'OK',});});

そして、jedtxt要素は次のようになります。

<div id="ni-50" name="ni-50" class="jedtxt">somevalue to edit</div>

2番目のケースの方が少し優れていますが、最初のクリックで直接機能するように編集するクリックを探しています。ダブルクリックまたは他のイベントトリガーを試しましたが、問題は同じです。これは、div要素にリンクされた他のイベントがないバニラテストページです。

これについての支援を事前に感謝します。

4

1 に答える 1

0

このトピックを読むことをお勧めします:

live() 関数を使用した jQuery のインプレース編集の問題..忍者が必要

2番目のソリューションの男はそれを解決しました

$(this).trigger('click');
    $('.editable').live('click',function() {

    $('.editable').editInPlace({
        callback: function(unused, enteredText) { return enteredText; },
        bg_over: "#cff",
        field_type: "textarea",
        textarea_rows: "5",
        textarea_cols: "3",
        saving_image: "./images/ajax-loader.gif"
    });  
    $(this).trigger('click');
 });
于 2012-07-15T23:01:55.493 に答える