2014-04-07 21 views
0

我有一个AJAX调用返回一个JSON对象与选择下拉列表,像这样:jQuery的不触发对()的变化

{ 
    "responseCode": 200, 
    "field_value": "1", 
    "field_options": { 
     "175": "Incorrect Listing", 
     "176": "High Return Rate", 
     "177": "Easily Damaged" 
    }, 
    "selectOptions": "<select id=\"do_not_order_options_102450\" class=\"input-medium\"><option value=\"\">Choose Option<\/option><option value=\"175\">Incorrect Listing<\/option><option value=\"176\">High Return Rate<\/option><option value=\"177\">Easily Damaged<\/option><\/select>" 
} 

在我的网页,我输出下拉列表中选择。 (我有很多的这些我的网页上的BTW)

在我的jQuery脚本我有这样的设置:

$(function(){ 
     $('select[id^="do_not_order_options_"]').on("change",function(){ 
      alert(1); 
     }); 
}); 

它不点火当我选择一个选项...任何人都知道发生什么事是问题吗?

谢谢!

+1

显示您的HTML文件 –

+0

@JFit:它隐藏在JSON中。向右滚动。假定JSON字符串被附加到页面上。 –

+0

啊,这就是为什么..检查TJ的答案。 –

回答

2

您引用的代码将勾选存在,然后的匹配选择框的事件处理程序。但是,如果您向页面添加更多内容,则他们的change事件未挂钩。

你可能想看看事件委派:

$(function() { 
    $('some container all these selects share').on('change', 'select[id^="do_not_order_options"]', function() { 
     // Handle change 
    }); 
}); 

jQuery的ensures that the change event bubbles,所以我们可以把它挂在容器元素和使用jQuery的援助,以触发我们的处理只为匹配的元素(选择,在此案件)。

由于我们将事件挂在容器上,因此在容器内添加更多选择使它们神奇地工作。

+1

Woah,快速.. +1。 – George

+0

@oGeez将[this](http://api.jquery.com/)添加到您的书签...';)' – Stphane

+0

@ f00bar:哦,他/她知道这个东西。我认为这是打字速度令人印象深刻。 (我母亲在高中给我的一些最好的建议是:“你进入电脑,打字。”) –