为什么不使用这个js代码?点击后:
输出form #find_sc
为“true”。
输出.pagination a
是“未定义的”。
“{1}}中没有”输出(在这种情况下,不显示警报)。
form select option
您的解决方案或建议是什么?
编辑:请点击我的示例中的以下图片
$('.pagination a, form #find_sc, form select option').live('click', function(e) {
e.preventDefault();
if($('.pagination a')){
var dirc = $(this).attr('href'); // this is a link tag <a></a>
}
if($('form #find_sc')){
var dirc = $(this).attr('class'); // this is a button tag <button></button>
}
if($('form select option')){
var dirc = $(this).attr('class'); // this is a selectbox. i want after click on option in it, was active and attr class in selectbox. <select><option></option></select>
}
alert(dirc);
$.get( dirc, function(html) {
//$('#ok').append(html);
$('#num_count').replaceWith( $(html).find('#num_count') );
$('tr#paginate').replaceWith( $(html).find('tr#paginate') );
$('.pagination').replaceWith( $(html).find('.pagination') );
});
return false;
});
- 这是 - &gt;
form #find_sc
- 这是 - &gt;
.pagination a
- 这是 - &gt;
- &gt; [我希望在select中单击选项后,在selectbox中处于活动状态和attr类。] 示例: my problem in here
答案 0 :(得分:1)
您无法知道哪个jQuery选择器“触发”了该事件。
您只知道有效元素$(this)
,因此只需获取其href
属性(如果存在),或采用其class
属性:
$('.pagination a, form #find_sc, form select option').live('click', function(e) {
e.preventDefault();
var sender = $(this);
var dirc = sender.attr("href") || sender.attr("class");
alert(dirc);
...
});
修改:要捕获下拉列表更改事件,您无法使用click
代替change
。为防止重复代码,请将其放入命名函数中:
function MyEventHandler(e) {
e.preventDefault();
var sender = $(this);
var dirc = sender.attr("href") || sender.attr("class");
alert(dirc);
...
}
然后附上适当的事件:
$('form select').live('change', MyEventHandler);
$('.pagination a, form #find_sc').live('click', MyEventHandler);
答案 1 :(得分:0)
我看到的问题是if
陈述中给出的条件
例如,$('.pagination a')
即使没有指向任何元素,也总是为真。这是一个JQuery对象,因为它是一个真正的值。
同样适用于其他if
条件。
使用length
属性检查替换if条件。也就是说,将$('.pagination a')
替换为$('.pagination a').length
length
返回此变量指向的元素数
答案 2 :(得分:0)
您应该使用length
属性来检查jQuery
是否返回了任何元素。同样在get
成功处理程序中,您可以将$(html)
缓存到局部变量中并在多个位置使用它。试试这个
$('.pagination a, form #find_sc, form select option').live('click', function(e) {
e.preventDefault();
if($('.pagination a').length > 0){
var dirc = $(this).attr('href'); // this is a link tag <a></a>
}
if($('form #find_sc').length > 0){
var dirc = $(this).attr('class'); // this is a button tag <button></button>
}
if($('form select option').length > 0){
var dirc = $(this).attr('class'); // this is a selectbox. i want after click on option in it, was active and attr class in selectbox. <select><option></option></select>
}
alert(dirc);
$.get( dirc, function(html) {
var $html = $(html);
$('#num_count').replaceWith( $html.find('#num_count') );
$('tr#paginate').replaceWith( $html.find('tr#paginate') );
$('.pagination').replaceWith( $html.find('.pagination') );
});
return false;
});