2012-04-17 13 views
0

私はjQuery 1.7.1を使用しています。次のコードは、選択メニューに.clickイベントを追加する追加のオプションを追加します。このコードはfirefox/ie9で完璧に動作しますが、Add New Optionをクリックするとie7/8に次のエラーが表示されます。私は運もなくselectイベントを試みました。構文エラー、認識できない表現:# jqueryの - 1.7.1.js、行4179文字2jQueryクリックがie7/8の選択オプションで動作しない

IE7/8

$("select").append($('<option></option>').text("Add New Option").click(function(){ 
    alert("test"); 
})); 

JSエラー SCRIPT5022などのレガシーブラウザでこの仕事をするためにどのように誰を知っています

JSフィドル例

http://jsfiddle.net/gchristman/gucgG/3/

+0

は、なぜあなたは 'option'のための' onclick'ハンドラが必要です。代わりに、onClickハンドラをselectまたはincaseに置いて、クリック時に処理する必要がある場合は、selectで 'click'ハンドラを使用します。 –

+0

新しいイベントを追加するオプションが選択されている場合にのみ、クリックイベントを処理する必要があります。下記のように、この場合はonChangeは機能しません。私はjsfiddleのonClickを使ってコードをテストしたところ、正常に動作するようです。なぜ私のアプリでまだ動作しないのか分かりません。 –

答えて

2

だけ選択に変更イベントをサブスクライブし、それはあなたが追加したアイテムだかどうかを確認、オプションにイベントをクリックして接続しないでください?私はあなたの新しい項目に変更の中でそれを識別するために0の値を与えました。 IE7/8の使用javascriptのための

$("select").append($('<option></option').text("Add New Option").val(0)); 

$("select").change(function() { 
    if $("select option:selected").val() == 0) { 
     alert("test"); 
    } 
}); 
+0

このコードを試してみましたが、すべての変更を警告する点を除いて、従来のブラウザでも機能します。私はそれを簡単に修復することができます。 –

+0

クールで、.val()内のものを照会するだけで、その上にparseIntかcheck == "0"のような文字列になる可能性があります:) – mattytommo

1

てみ

.on("click", function() { 
    alert("test"); 
})); 

の代わり:

.click(function() { 
    alert("test"); 
})); 

それが動作するかどうか?

+1

ライブでは1.7の代わりに使用されていません: – mattytommo

+1

Oppsは現在多くのコードを変更するようになっています:P – Drakkainen

+1

@mattytommoは、jQuery 1.7.1でLiveを置き換え、 "on" http://api.jquery.com/on/ –

3

onchangeイベントを使用する必要があります。 代わりにこれを試してみてください:

$("select").append($('<option></option>').text("Add New Option")).change(function(){ 
    alert("test"); 
})); 

関連:Click event on select option element in chrome

+0

変更イベントを新しいオプションにアタッチしていますが、選択していませんか? – mattytommo

+0

@mattytommoありがとう、それを修正しました – jorgebg

+0

変更イベントが動作しませんなぜクリックしていたのですか –

0

JS fiddle

<select id="sel" onchange="test(this.value)"><option>option1</option></select> 

<script language="javascript"><!-- 
//<![CDATA[ 
s=document.getElementById("sel"); 
var opt = document.createElement('option'); 
opt.value = "add"; 
opt.innerHTML = "Add New Option"; 
s.appendChild(opt); 

function test(val){ 
    if (val = "add"){ 
     alert("test"); 
    } 
} 

//]]> 
--></script> 
関連する問題