我正在尝试在选择下拉列表中的项目时弹出警报,下拉列表中填充了数据库项目。我已经在线查看了代码的jquery部分,其中代码工作正常并且弹出了警报。只是想知道是否有人可以帮助解决为什么它不能使用我的代码? (ajax部分与我的问题无关)
var jan312009 = new Date(2009, 1-1, 31);
var oneMonthFromJan312009 = new Date(jan312009).add(1).month();
答案 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);
});