2012-02-09 26 views
0
function removeNewsItem(id,idStamp,obj){ 
$('#whiteCover')show(); 

$('#contentOfBox').html= ('Are you sure you want ot completely remove this news item?<br/><br/><div style="text-align:center;"><input type="button" class="button blue medium" onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\','+**obj**+')" value="Yes"/> <input type="button" class="button red medium" value="No" onclick="resetContentBox();"/></div>'); 

$("#whiteCoverContainer").fadeIn(); 
} 

function removeNewsItemConfirmed(id,idStamp,obj){ 
    alert(obj); 
    $(obj).remove(); 
    return; 
} 

<tr><td onclick=removeNewsItem('111','134234',this)></td></tr> 

「removeNewsItem」でtdをクリックすると、「this」要素を次の関数に渡すことができないようです。ユーザーがクリックすると、削除を確認するメッセージが表示されます彼らはそれをクリックすると、 'これ'は適切なものを渡されていない、またはポイントに私は方法fhureことができません...javascriptの 'this'をある関数から別の関数に渡しますか?

誰かが助けてくれるかもしれません:私は別のインラインonclickイベント上記のような?

+0

。あなたは実際にJavaScriptでプログラミングする方法を知っていますか? –

+0

引用符( ")を忘れましたが、これはHTML文字列ではなくDOMオブジェクトを表しますが、" this "は正しく渡されるはずです:http://stackoverflow.com/questions/925734/whats-this-in-javascript -onclick – Julien

+0

ええ、そのコードには何がありますか?$( '#contentOfBox')。html = '???。jqueryと' onclick' ???私はあなたが適切なjsを最初に学ぶ必要があると思います。 – elclanrs

答えて

0

は、クリックされた要素を参照しています。独自のonclickハンドラを持つ新しい要素を追加すると、thisがそれを参照します。それを作成した人ではありません。

だから、これはあなたが

onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\','+**obj**+')" 

を考えているように動作することはありません代わりに、あなたはを追跡することができます参照を作成する必要があります。

全体的には、これをすべて処理する方がはるかに優れていますが、うまくいけば、これはあなたに向かうでしょう。 (既存のマークアップのあまり変えずに)このようになります。

+0

これもスポットです!私はjQueryを初めて使っていて、これはかなりきれいに見えます... – John

1

イベントを使用する必要があるようです。 jQueryを使用している場合は、属性の代わりにイベントを添付するのにon()を使用してください。 More about on()

この関数をonclickの代わりに使用すると、thisが関数に返されます。例として:

<table> 
<tr><td>123</td></tr> 
<tr><td>456</td></tr> 
</table> 

そして、いくつかのJS

// Will have access to this and has ev which is the event 
function removeNewsItem(ev){ 
    var $this = $(this); 
} 

$('table').on('click', 'td', removeNewsItem); 

、あなたのテーブルのセルにデータ値を添付する必要がある場合は、あなたが行うことができ、データの属性やjQuery's data()とのこと。

+0

これはまだまだ緊張しているようですが、私はそれを理解するために何かをしなければならないでしょう。ありがとうございました!あなたのすべての返事のために: – John

1

あなたのイベント:

$(".newsItem").click(function(){ 
    var id = $(this).attr('id'); 
    var idStamp = $(this).attr('idStamp'); 
    $('#whiteCover')show(); 

    $('#contentOfBox').html= ('Are you sure you want ot completely remove this news item?<br/><br/><div style="text-align:center;"><input type="button" class="button blue medium" onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\')" value="Yes"/> <input type="button" class="button red medium" value="No" onclick="resetContentBox();"/></div>'); 

    $("#whiteCoverContainer").fadeIn(); 
}); 

function removeNewsItemConfirmed(id,idStamp){    
    alert(id);    
    $("#"+id).remove();    
    return;    
}  

次のようになりますあなたのHTML:jQueryのメソッドの適切な使用ではありません

<tr><td id='111' idStamp='134234' class='newsItem'></td></tr> 
+0

ありがとうございました!それは素晴らしいです、私は​​に追加の属性を追加することは考えていませんでした。 – John

関連する問題