Javascript 如何从特定事件目标获取数据
我正在尝试使用我的Javascript 如何从特定事件目标获取数据,javascript,jquery,html,list.js,Javascript,Jquery,Html,List.js,我正在尝试使用我的列表中的单击事件提取街道的名称使用AJAX成功回调,获取地址数据的整个过程工作正常。我添加了一个成功的客户对话框,其中包含他单击的街道信息 但在成功对话中的街头表演时,我只想获得街道名称并将其传输到一个将被隐藏的输入中,我希望使用该街道的名称,以便将来当客户端单击按钮时,复制表单aAJAX的地址,该表单可以使用此街道的名称,以便作为此操作的回报,将该地址的扩展版本返回到我的表单中 但是,我想不出或者找不到任何关于如何提取客户在列表上单击的街道名称的信息。他唯一能返回给我的是列表
列表中的单击事件提取街道的名称使用AJAX
成功回调,获取地址数据的整个过程工作正常。我添加了一个成功的客户对话框,其中包含他单击的街道信息
但在成功对话中的街头表演时,我只想获得街道名称并将其传输到一个将被隐藏的输入中,我希望使用该街道的名称,以便将来当客户端单击按钮时,复制表单aAJAX
的地址,该表单可以使用此街道的名称,以便作为此操作的回报,将该地址的扩展版本返回到我的表单中
但是,我想不出或者找不到任何关于如何提取客户在列表上单击的街道名称的信息。他唯一能返回给我的是列表分组开始时生成的原始元素,该列表分组使用的是我的API中包含所有注册地址的路由
我已经尝试通过生成元素的类获取数据,但没有结果。。我想尝试向单击的地址添加一个ID,但在jQuery文档中找不到任何可以帮助我的东西
myelements.js
$(document).ready(function(){
// Setup Modal
$('#openSearchAddress').click(function() {
// Start Modal
$('#modalSearchAddress')
.modal('show')
;
});
$('#sendSearchAddress').click(function() {
$.ajax({
type: "GET",
dataType: "JSON",
url: "https://****-api.herokuapp.com/api/itapetininga-street-last-three-searcheds?access_token=7Z****",
success: function (finalData) {
// Running test
console.log(finalData);
if (finalData) {
// var dd = JSON.parse(result);
// addressStreet(finalData[0].addressStreet)
// name: finalData[0].addressStreet
// Print Results
var options = {
valueNames: ['addressStreet', 'neighborhoodStreet']
};
// Example One
var values = finalData.map(function(finalDatum) {
return {
addressStreet: finalDatum.addressStreet,
neighborhoodStreet: finalDatum.neighborhoodStreet,
};
});
var userList = new List('users', options, values);
// Start Selected Address With Event Delegation
$("#target_ul").on("click", "li", function(event) {
// Prevent Redirect In Click
event.preventDefault();
// Load Options For Notification
var placementFrom = "top";
var placementAlign = "center";
var colorName = "bg-light-green";
// Set Options For Notification
showNotification(colorName, null, placementFrom, placementAlign);
// Start New Notification
function showNotification(colorName, text, placementFrom, placementAlign, animateEnter, animateExit) {
if (colorName === null || colorName === '') { colorName = 'bg-black'; }
if (text === null || text === '') { text = 'Endereço que você selecionou é '; }
if (animateEnter === null || animateEnter === '') { animateEnter = 'animated fadeInDown'; }
if (animateExit === null || animateExit === '') { animateExit = 'animated fadeOutUp'; }
var allowDismiss = true;
// Start Modern Structure For Notification
$.notify({
message: text
}, {
type: colorName,
allow_dismiss: allowDismiss,
newest_on_top: true,
timer: 1000,
placement: {
from: placementFrom,
align: placementAlign
},
animate: {
enter: animateEnter,
exit: animateExit
},
template: '<div data-notify="container" class="bootstrap-notify-container alert alert-dismissible {0} ' + (allowDismiss ? "p-r-35" : "") + '" role="alert">' +
'<button type="button" aria-hidden="true" class="close" data-notify="dismiss">×</button>' +
'<span data-notify="icon"></span> ' +
'<span data-notify="title">{1}</span> ' +
'<span data-notify="message">{2}</span>' +
'<div class="progress" data-notify="progressbar">' +
'<div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>' +
'</div>' +
'<div id="selectedAddress"></div>' +
'<a href="javascript:void(0);" class="alert-link" id="selectedSearchAddress" hidden></a>' +
'<a href="{3}" target="{4}" data-notify="url"></a>' +
'</div>'
}
);
}
// Add Selected Address In Notification
var selectedAddress = $( this ).text();
console.log('Selected address is: ', selectedAddress);
if (event.target && event.target.nodeName === 'LI') {
let item = event.target;
$("#selectedAddress").html(item.innerHTML);
}
// Prepare Input Hidden For Import Data To Form
// Add Informations About Selected Address
$('#selectedSearchAddress').text(selectedAddress);
});
// Print Variable Contain Native Data From All Street In List
console.log(values);
}
}
});
});
单击列表后在我的控制台中的响应
elements.js:85 (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
elements.js:189 (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
elements.js:174 Selected address is:
Rua Baltazar Lorenzetto
Jardim Brasil
试试这个
$("#target_ul").on("click", "li", function(event) {
var self = $(this); // Storing the reference of the element
...................... // Your code as is
......................
// Add Selected Address In Notification
var selectedAddress = $( self ).text(); // Using the reference of the stored element
....................... // Your code as is
.......................
给一个和我一样怀疑的人,分析更多关于我们的朋友AkshayKhandelwal告诉我的事情。我试图从Api Get开始请求不再相同的信息。通过获取特定目标,我们将无法访问在函数开头返回的原始JSON访问。根据解决方案,我决定选择使用ANGULAR JS构建一个控制器,利用这种方法获取我们的事件变得更具操纵性和可伸缩性
// Query Address In Catalog
$('#openSearchAddress').click(function() {
// Start Modal
$('#modalSearchAddress')
.modal('show')
;
});
modal的调用保持不变
我必须在前端恢复我们的结构,您可以在这里添加分页、查询、过滤器、突出显示等任何您想要的内容。您可以根据自己的喜好自定义的样式表:]
<div class="col-xs-12">
<ul class="list-search-address">
<li ng-repeat="item in items | filter : search" item="item" href="#/item/{{item.id}}" style="display: block; background-color: #eee; padding: 10px; box-shadow: inset 0 1px 0 #fff;">
<h3 style="font-size: 16px; margin: 0 0 0.3rem; font-weight: normal; font-weight: bold;">
<i ng-class="iconType" ng-mousedown="iconType='fa fa-check-circle-o'" ng-mouseup="iconType='fa fa-circle-o'" ng-click="circleClicked(item)"></i>{{ item.addressStreet }}</h3>
<p>{{ item.neighborhoodStreet }}</p>
</li>
</ul>
</div>
-
{{item.addressStreet}
{{item.neighthoodstreet}
谢谢你启发我的想法xD你能记录API返回的finaldata
对象吗?并用数据相应地更新问题。@AkshayKhandelwal抱歉,我要补充的是,当您在事件处理程序中有一个函数时,函数的this
关键字指向窗口,而不是您期望的元素。因此这个问题,顺便说一句,如果答案正确,你应该接受。为什么?我已经获得了完整的结果我想要的是在结果中分离邻里的地址,我希望只传输地址作为输入,而不是将街道和邻里一起传输,明白了吗?@smachs我之前说过,您使用this
关键字所针对的结果不再是相同的结果。您无法访问它,因为它现在指向窗口
。这有意义吗?是的,你认为我必须重做我的活动目标吗?
// Query Address In Catalog
$('#openSearchAddress').click(function() {
// Start Modal
$('#modalSearchAddress')
.modal('show')
;
});
angular.module('YourModuleName', [You can extend it using other libraries])
.controller('MyCtrl', function ($scope, $http) {
$http({
method: "GET",
url: "Your API Link"
}).then(function mySuccess(response) {
// Print JSON in console
// $scope.myWelcome = response.data;
$scope.iconType = 'fa fa-circle-o';
$scope.data = {
showDelete: false
};
$scope.edit = function (item) {
alert('Edit Item: ' + item.addressStreet);
};
$scope.clicker = function (item) {
alert('Clicked chevron: ' + item.addressStreet)
};
$scope.share = function (item) {
alert('Share Item: ' + item.addressStreet);
};
$scope.moveItem = function (item, fromIndex, toIndex) {
$scope.items.splice(fromIndex, 1);
$scope.items.splice(toIndex, 0, item);
};
$scope.onItemDelete = function (item) {
$scope.items.splice($scope.items.indexOf(item), 1);
};
$scope.circleClicked = function (item) {
alert('You selected Item: ' + item.addressStreet);
}
// Set Scope Contains Response Data
$scope.items = response.data;
}, function myError(response) {
$scope.myWelcome = response.statusText;
});
});
<div class="col-xs-12">
<ul class="list-search-address">
<li ng-repeat="item in items | filter : search" item="item" href="#/item/{{item.id}}" style="display: block; background-color: #eee; padding: 10px; box-shadow: inset 0 1px 0 #fff;">
<h3 style="font-size: 16px; margin: 0 0 0.3rem; font-weight: normal; font-weight: bold;">
<i ng-class="iconType" ng-mousedown="iconType='fa fa-check-circle-o'" ng-mouseup="iconType='fa fa-circle-o'" ng-click="circleClicked(item)"></i>{{ item.addressStreet }}</h3>
<p>{{ item.neighborhoodStreet }}</p>
</li>
</ul>
</div>