Andrew's answer to my comment引发了这个问题。
根据上面链接中的精彩答案,问题底部的代码仅适用于一个小部件。但这是一个很好的代码并且很有意义......我想我想要两全其美。不错的JS,(如果可能的话)并且将结果show()
仅为我们当时使用的元素。
这个代码片段是我的问题的主要症结,正如我所看到的那样:
source: function (request, response) { jQuery.ajax({ url: "/autocomplete.json", data: { term: request.term }, success: function (data) { if (data.length == 0) { jQuery('span.guest_investor_email').show(); jQuery('span.investor_field_delete_button').show(); } response(data); } });
目前:
我的页面上有一个“添加更多信息”的按钮,每次点击它时,都会显示自动填充文本字段的新实例,其中包含一些隐藏字段和display:none;
{{1} }}。
如果我使用自动完成文本字段,说3次,我在页面上有3个自动完成实例,第三个找到0结果:代码将显示()guest_investor_email
文本字段的所有3个实例,而不是只有guest_investor_email
一个空白。
问题:
我如何获得类似的东西
工作this
?
jQuery(this).siblings(('span.guest_investor_email').show();
是一个Object,而不是要选择的元素数组。如果它不在this
,我不介意,只要我知道如何实现它。感谢。
完整代码:
jQuery(".auto_search_complete").live("click", function() { jQuery(this).autocomplete({ minLength: 3, source: function (request, response) { jQuery.ajax({ url: "/autocomplete.json", data: { term: request.term }, success: function (data) { if (data.length == 0) { jQuery('span.guest_investor_email').show(); jQuery('span.investor_field_delete_button').show(); } response(data); } }); }, focus: function(event, ui) { jQuery(this).val(ui.item.user ? ui.item.user.name : ui.item.pitch.name); return false; }, select: function(event, ui) { jQuery(this).val(ui.item.user ? ui.item.user.name : ui.item.pitch.name); jQuery(this).siblings('div.hidden_fields').children('.poly_id').val(ui.item.user ? ui.item.user.id : ui.item.pitch.id); jQuery(this).siblings('div.hidden_fields').children('.poly_type').val(ui.item.user ? "User" : "Pitch"); jQuery(this).siblings('span.guest_investor_email').hide(); jQuery(this).siblings('span.investor_field_delete_button').show(); jQuery(this).attr('readonly','readonly'); jQuery(this).attr('id', "investor-selected"); return false; } }).each(function() { jQuery(this).data( "autocomplete" )._renderItem = function( ul, item ) { return jQuery( "" ) .data( "item.autocomplete", item ) .append("
" + (item.user ? item.user.name : item.pitch.name) + "
" + (item.user ? item.user.investor_type : item.pitch.investor_type) + " - " + (item.user ? item.user.city : item.pitch.city) + "
答案 0 :(得分:1)
我没有完全理解你想要实现的目标,但我认为你想要将.live
事件绑定到的元素是正确的吗?
jQuery(".auto_search_complete").live("click", function() {
var $this = $(this);
jQuery(this).autocomplete({
minLength: 3,
...
success: function (data) {
if (data.length == 0) {
jQuery('span.guest_investor_email').show();
$this.siblings('span.investor_field_delete_button').show();
}
...