jQuery for parent select
I'm trying to change the background color of the select box when they click on the select box but can't find what is wrong. I thought it would be something like
$(this.parent).css('background','#fff');
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
jquery
add a comment |
I'm trying to change the background color of the select box when they click on the select box but can't find what is wrong. I thought it would be something like
$(this.parent).css('background','#fff');
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
jquery
2
The value ofthis
changes in the success function.
– Taplar
Nov 19 '18 at 17:02
And$(this.parent)
is not how to access a parent element
– charlietfl
Nov 19 '18 at 17:04
1
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04
add a comment |
I'm trying to change the background color of the select box when they click on the select box but can't find what is wrong. I thought it would be something like
$(this.parent).css('background','#fff');
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
jquery
I'm trying to change the background color of the select box when they click on the select box but can't find what is wrong. I thought it would be something like
$(this.parent).css('background','#fff');
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
$('select.flag').change(function(){
var callid = $(this).data('callid');
var flag = $(this).val();
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {flag: flag, callid : callid},
success: function(result) {
$(this.parent).css('background','#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
<div class="pure-g">
<div class="pure-u-1-4">
<select data-callid="2" class="flag" style="">
<option value="flag">Flag</option>
</select>
</div>
</div>
jquery
jquery
asked Nov 19 '18 at 17:01
Steve Yancharas Jr.
16316
16316
2
The value ofthis
changes in the success function.
– Taplar
Nov 19 '18 at 17:02
And$(this.parent)
is not how to access a parent element
– charlietfl
Nov 19 '18 at 17:04
1
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04
add a comment |
2
The value ofthis
changes in the success function.
– Taplar
Nov 19 '18 at 17:02
And$(this.parent)
is not how to access a parent element
– charlietfl
Nov 19 '18 at 17:04
1
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04
2
2
The value of
this
changes in the success function.– Taplar
Nov 19 '18 at 17:02
The value of
this
changes in the success function.– Taplar
Nov 19 '18 at 17:02
And
$(this.parent)
is not how to access a parent element– charlietfl
Nov 19 '18 at 17:04
And
$(this.parent)
is not how to access a parent element– charlietfl
Nov 19 '18 at 17:04
1
1
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04
add a comment |
1 Answer
1
active
oldest
votes
The issue is that the value of this
changes within the success callback and is no longer the element the event originated from. There are a few ways to fix this.
Set the context
Providing the context option lets you specify to jQuery what the this
should be within the callbacks.
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
context: this,
success: function(result) {
$(this).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use a variable
You could also make your own variable to store it in that does not change.
var that = this;
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(that).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use the already existing event
The event already has a reference to the element on it, so you do not have to create your own variable.
$('select.flag').change(function(e){
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(e.target).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53379436%2fjquery-for-parent-select%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The issue is that the value of this
changes within the success callback and is no longer the element the event originated from. There are a few ways to fix this.
Set the context
Providing the context option lets you specify to jQuery what the this
should be within the callbacks.
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
context: this,
success: function(result) {
$(this).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use a variable
You could also make your own variable to store it in that does not change.
var that = this;
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(that).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use the already existing event
The event already has a reference to the element on it, so you do not have to create your own variable.
$('select.flag').change(function(e){
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(e.target).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
add a comment |
The issue is that the value of this
changes within the success callback and is no longer the element the event originated from. There are a few ways to fix this.
Set the context
Providing the context option lets you specify to jQuery what the this
should be within the callbacks.
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
context: this,
success: function(result) {
$(this).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use a variable
You could also make your own variable to store it in that does not change.
var that = this;
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(that).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use the already existing event
The event already has a reference to the element on it, so you do not have to create your own variable.
$('select.flag').change(function(e){
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(e.target).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
add a comment |
The issue is that the value of this
changes within the success callback and is no longer the element the event originated from. There are a few ways to fix this.
Set the context
Providing the context option lets you specify to jQuery what the this
should be within the callbacks.
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
context: this,
success: function(result) {
$(this).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use a variable
You could also make your own variable to store it in that does not change.
var that = this;
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(that).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use the already existing event
The event already has a reference to the element on it, so you do not have to create your own variable.
$('select.flag').change(function(e){
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(e.target).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
The issue is that the value of this
changes within the success callback and is no longer the element the event originated from. There are a few ways to fix this.
Set the context
Providing the context option lets you specify to jQuery what the this
should be within the callbacks.
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
context: this,
success: function(result) {
$(this).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use a variable
You could also make your own variable to store it in that does not change.
var that = this;
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(that).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
Use the already existing event
The event already has a reference to the element on it, so you do not have to create your own variable.
$('select.flag').change(function(e){
$.ajax({
url: "/calls/update/flag",
type: "POST",
data: {
flag: flag,
callid: callid
},
success: function(result) {
$(e.target).parent().css('background', '#fff');
},
error: function() {
alert("Error. Please try again.");
}
});
});
answered Nov 19 '18 at 17:10
Taplar
15.7k21529
15.7k21529
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53379436%2fjquery-for-parent-select%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
The value of
this
changes in the success function.– Taplar
Nov 19 '18 at 17:02
And
$(this.parent)
is not how to access a parent element– charlietfl
Nov 19 '18 at 17:04
1
api.jquery.com/jQuery.ajax Take a look at the context option. Or use a variable.
– Taplar
Nov 19 '18 at 17:04