单击下拉列表项时,Jquery警报不显示

时间:2017-02-22 18:28:00

标签: javascript jquery

我正在尝试在选择下拉列表中的项目时弹出警报,下拉列表中填充了数据库项目。我已经在线查看了代码的jquery部分,其中代码工作正常并且弹出了警报。只是想知道是否有人可以帮助解决为什么它不能使用我的代码? (ajax部分与我的问题无关)
         

var jan312009 = new Date(2009, 1-1, 31);
var oneMonthFromJan312009 = new Date(jan312009).add(1).month();

1 个答案:

答案 0 :(得分:2)

一些事情:

您无法链接到外部JavaScript源代码库并将您自己的JavaScript嵌入到单个this元素中。您必须使用两个class Wrapper(object): def __init__(self, wrapped, actions={}): self.wrapped = wrapped self.actions = actions self.navigations = [] # EXAMPLE, SEE THE TEST CLASS CODE def __getattr__(self, item): if item in self.actions: return self.actions[item] # do other fancy stuff here # UPDATE #2: added for clarity. this is the current implementation orig_attr = self.wrapped.__getattribute__(item) if callable(orig_attr): def hooked(*args, **kwargs): self.pre(item, *args, **kwargs) self.err = False try: result = orig_attr(*args, **kwargs) except Exception as e: #logs self.post(*args, **kwargs) raise if type(self.wrapped) == type(result): return self return result return hooked else: return orig_attr class SomeTest(): #blah blah init stuff, set self.driver = selenium.webdriver.Phantomjs def spawn_actions(self): def navigate(scoped_self, to=''): self.driver.switch_to_default_content() self.driver.switch_to.frame(to) scoped_self.navigations.append(to) # <--- appended to wrapper.navigations return {'navigate': navigate} def run(self): driver = Wrapper(self.driver, self.spawn_actions()) driver.get(url) driver.navigate('New Request') # fun tests! 元素,如下所示:

<script>

此外,您的代码最后还包含额外的<script>,这是语法错误

接下来,因为您正在动态创建元素,所以在将元素添加到DOM之前,可能是连接事件处理程序的代码正在运行。在这种情况下,建议使用 event delegation 。即使当前代码在脚本运行之前创建了元素,如果您的代码结构发生变化,这被认为是防止将来成为问题的最佳实践。

正如该文章的开头所述:

  

事件委托允许我们将单个事件监听器附加到   父元素,将为匹配a的所有后代触发   选择器,无论这些后代现在存在还是被添加到   将来

将您的代码更改为:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"><script>

 <script>
        $(document).on('click', '.studentclass', function() {
            var clickeditem = $(this).attr("id"); 
            alert(clickeditem);
        });
</script>

由于我们无法在此处重现.php,我将使用静态元素显示工作代码

});
$(document).on("click", ".studentclass", function() {
  var clickeditem = $(this).attr("id"); 
  alert(clickeditem);
});